700
How can I filter the check-boxes (method 1)

public void init()
{
	COM com_Column,com_Editor,com_Items;
	anytype var_Column,var_Editor,var_Items;
	;

	super();

	var_Column = COM::createFromVariant(exgrid1.Columns().Add("Check")); com_Column = var_Column;
		var_Editor = com_Column.Editor(); com_Editor = var_Editor;
			com_Editor.EditType(19/*CheckValueType*/);
			com_Editor.Option(17/*exCheckValue2*/,COMVariant::createFromInt(1));
		com_Column.DisplayFilterButton(true);
		com_Column.DisplayFilterPattern(false);
		com_Column.FilterType(6/*exCheck*/);
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.AddItem(COMVariant::createFromBoolean(true));
		com_Items.AddItem(COMVariant::createFromBoolean(true));
		com_Items.AddItem(COMVariant::createFromBoolean(false));
		com_Items.AddItem(COMVariant::createFromBoolean(true));
		com_Items.AddItem(COMVariant::createFromBoolean(false));
		com_Items.AddItem(COMVariant::createFromBoolean(true));
		com_Items.AddItem(COMVariant::createFromBoolean(false));
}
699
How can add a button to control

// ButtonClick event - Occurs when user clicks on the cell's button.
void onEvent_ButtonClick(int   _Item,int   _ColIndex,COMVariant   _Key)
{
	;
	print( "ButtonClick" );
	print( exgrid1.Items().CellCaption(_Item,_ColIndex) );
	print( _Key );
}

public void init()
{
	COM com_Column,com_Column1,com_Columns,com_Editor,com_Editor1,com_Items;
	COMVariant s;
	anytype var_Column,var_Column1,var_Columns,var_Editor,var_Editor1,var_Items;
	int h;
	str var_s;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.DefaultItemHeight(22);
	exgrid1.HeaderHeight(22);
	exgrid1.Appearance(0/*None2*/);
	exgrid1.DrawGridLines(-2/*exRowLines*/);
	exgrid1.ScrollBySingleLine(false);
	var_s = "gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTql";
	var_s = var_s + "Vq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0";
	var_s = var_s + "ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yN";
	var_s = var_s + "AOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=";
	exgrid1.Images(COMVariant::createFromStr(var_s));
	exgrid1.HTMLPicture("pic1","c:\\exontrol\\images\\auction.gif");
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		var_Column = COM::createFromVariant(com_Columns.Add("Type")); com_Column = var_Column;
			com_Column.Width(48);
			com_Column.Def(17/*exCellValueFormat*/,COMVariant::createFromInt(1));
		var_Column1 = COM::createFromVariant(com_Columns.Add("Appearance")); com_Column1 = var_Column1;
			com_Column1.Def(17/*exCellValueFormat*/,COMVariant::createFromInt(1));
			com_Column1.Alignment(1/*CenterAlignment*/);
			com_Column1.HeaderAlignment(1/*CenterAlignment*/);
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Items.<b>CellHasButton</b> property");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"Button <b>1</b>");
		com_Items.CellHasButton(h,COMVariant::createFromInt(1),true);
		h = com_Items.AddItem("Items.<b>CellButtonAutoWidth</b> property");
		com_Items.CellValue(h,COMVariant::createFromInt(1)," Button <b>2</b> ");
		com_Items.CellHasButton(h,COMVariant::createFromInt(1),true);
		com_Items.CellButtonAutoWidth(h,COMVariant::createFromInt(1),true);
		h = com_Items.AddItem("Items.<b>CellHasButton</b> property");
		com_Items.CellValue(h,COMVariant::createFromInt(1)," <img>2</img>Button <b>3</b> ");
		com_Items.CellHasButton(h,COMVariant::createFromInt(1),true);
		com_Items.CellButtonAutoWidth(h,COMVariant::createFromInt(1),true);
		h = com_Items.AddItem("Items.<b>CellHasButton</b> property");
		com_Items.ItemHeight(h,32);
		com_Items.CellValue(h,COMVariant::createFromInt(1)," <img>2</img>Button <b>4</b> <img>pic1</img> ");
		com_Items.CellHasButton(h,COMVariant::createFromInt(1),true);
		com_Items.CellButtonAutoWidth(h,COMVariant::createFromInt(1),true);
		h = com_Items.AddItem("Items.<b>CellHasButton</b> in splitted cells");
		com_Items.CellValue(h,COMVariant::createFromInt(1)," Button <b>5.1</b> ");
		com_Items.CellHasButton(h,COMVariant::createFromInt(1),true);
		com_Items.CellButtonAutoWidth(h,COMVariant::createFromInt(1),true);
		s = com_Items.SplitCell(h,COMVariant::createFromInt(1));
		com_Items.CellValue(COMVariant::createFromInt(0),s," Button <b>5.2</b> ");
		com_Items.CellHasButton(COMVariant::createFromInt(0),s,true);
		com_Items.CellButtonAutoWidth(COMVariant::createFromInt(0),s,true);
		h = com_Items.AddItem("Column.<b>Editor</b>, Items.<b>CellEditor</b>");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"Visible when clicking the cell");
		var_Editor = com_Items.CellEditor(h,COMVariant::createFromInt(1)); com_Editor = var_Editor;
			com_Editor.EditType(1/*EditType*/);
			com_Editor.AddButton("B1",COMVariant::createFromInt(1),COMVariant::createFromInt(0),"This is a bit of text that's shown when the cursor hovers the button B1");
			com_Editor.AddButton("B3",COMVariant::createFromInt(2),COMVariant::createFromInt(1),"This is a bit of text that's shown when the cursor hovers the button B3");
			com_Editor.AddButton("B4",COMVariant::createFromInt(1),COMVariant::createFromInt(1),"This is a bit of text that's shown when the cursor hovers the button B4");
			com_Editor.ButtonWidth(24);
		h = com_Items.AddItem("Column.<b>Editor</b>, Items.<b>CellEditor</b>");
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(3));
		var_Editor1 = com_Items.CellEditor(h,COMVariant::createFromInt(1)); com_Editor1 = var_Editor1;
			com_Editor1.EditType(6/*CheckListType*/);
			com_Editor1.AddItem(1,"Flag 1");
			com_Editor1.AddItem(2,"Flag 2");
			com_Editor1.AddItem(4,"Flag 4");
			com_Editor1.AddItem(8,"Flag 8");
			com_Editor1.AddButton("C1",COMVariant::createFromInt(1),COMVariant::createFromInt(0),"This is a bit of text that's shown when the cursor hovers the button C1");
			com_Editor1.AddButton("C3",COMVariant::createFromInt(2),COMVariant::createFromInt(0),"This is a bit of text that's shown when the cursor hovers the button C2");
			com_Editor1.AddButton("C4",COMVariant::createFromInt(1),COMVariant::createFromInt(0),"This is a bit of text that's shown when the cursor hovers the button C3");
			com_Editor1.ButtonWidth(24);
	exgrid1.EndUpdate();
}
698
The item is not getting selected when clicking the cell's checkbox. What should I do

// CellStateChanged event - Fired after cell's state has been changed.
void onEvent_CellStateChanged(int   _Item,int   _ColIndex)
{
	;
	exgrid1.Items().SelectItem(_Item,true);
}

public void init()
{
	COM com_Items;
	anytype var_Items;
	;

	super();

	COM::createFromVariant(exgrid1.Columns().Add("Check")).Def(0/*exCellHasCheckBox*/,COMVariant::createFromBoolean(true));
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.AddItem(COMVariant::createFromInt(0));
		com_Items.AddItem(COMVariant::createFromInt(1));
		com_Items.AddItem(COMVariant::createFromInt(2));
		com_Items.AddItem(COMVariant::createFromInt(3));
}
697
Is it possible to limit the height of the item while resizing

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void onEvent_AddItem(int   _Item)
{
	;
	exgrid1.Items().ItemMinHeight(_Item,18);
	exgrid1.Items().ItemMaxHeight(_Item,72);
}

public void init()
{
	COM com_Column,com_Items;
	anytype var_Column,var_Items;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.ItemsAllowSizing(-1/*exResizeItem*/);
	exgrid1.ScrollBySingleLine(false);
	exgrid1.BackColorAlternate(WinApi::RGB2int(240,240,240));
	exgrid1.Columns().Add("Names");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.AddItem("Mantel");
		com_Items.AddItem("Mechanik");
		com_Items.AddItem("Motor");
		com_Items.AddItem("Murks");
		com_Items.AddItem("Märchen");
		com_Items.AddItem("Möhren");
		com_Items.AddItem("Mühle");
	var_Column = COM::createFromObject(exgrid1.Columns()).Item(COMVariant::createFromInt(0)); com_Column = var_Column;
	com_Column.SortOrder(1/*SortAscending*/);
	exgrid1.EndUpdate();
}
696
Is it possible to copy the hierarchy of the control using the GetItems method

public void init()
{
	COM com_Items;
	anytype var_Items;
	int h;
	;

	super();

	exgrid1.LinesAtRoot(-1/*exLinesAtRoot*/);
	exgrid1.Columns().Add("Def");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Root");
		com_Items.InsertItem(h,,"Child 1");
		com_Items.InsertItem(h,,"Child 2");
	exgrid1.PutItems(exgrid1.GetItems(COMVariant::createFromInt(-1)));
}
695
Is it possible to auto-numbering the children items but still keeps the position after filtering

public void init()
{
	COM com_Column,com_Column1,com_Column2,com_Column3,com_Column4,com_Column5,com_Column6,com_Items;
	anytype var_Column,var_Column1,var_Column2,var_Column3,var_Column4,var_Column5,var_Column6,var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.LinesAtRoot(-1/*exLinesAtRoot*/);
	var_Column = COM::createFromVariant(exgrid1.Columns().Add("Items")); com_Column = var_Column;
		com_Column.DisplayFilterButton(true);
		com_Column.FilterType(240/*exFilter*/);
		com_Column.Filter("Child 2");
	var_Column1 = COM::createFromVariant(exgrid1.Columns().Add("Pos.1")); com_Column1 = var_Column1;
		com_Column1.FormatColumn("1 ropos ''");
		com_Column1.Position(0);
		com_Column1.Width(32);
		com_Column1.AllowSizing(false);
	var_Column2 = COM::createFromVariant(exgrid1.Columns().Add("Pos.2")); com_Column2 = var_Column2;
		com_Column2.FormatColumn("1 ropos ':'");
		com_Column2.Position(1);
		com_Column2.Width(32);
		com_Column2.AllowSizing(false);
	var_Column3 = COM::createFromVariant(exgrid1.Columns().Add("Pos.3")); com_Column3 = var_Column3;
		com_Column3.FormatColumn("1 ropos ':|A-Z'");
		com_Column3.Position(2);
		com_Column3.Width(32);
		com_Column3.AllowSizing(false);
	var_Column4 = COM::createFromVariant(exgrid1.Columns().Add("Pos.4")); com_Column4 = var_Column4;
		com_Column4.FormatColumn("1 ropos '|A-Z|'");
		com_Column4.Position(3);
		com_Column4.Width(32);
		com_Column4.AllowSizing(false);
	var_Column5 = COM::createFromVariant(exgrid1.Columns().Add("Pos.5")); com_Column5 = var_Column5;
		com_Column5.FormatColumn("'<font Tahoma;7>' + 1 ropos '-<b>||A-Z'");
		com_Column5.Def(17/*exCellValueFormat*/,COMVariant::createFromInt(1));
		com_Column5.Position(4);
		com_Column5.Width(32);
		com_Column5.AllowSizing(false);
	var_Column6 = COM::createFromVariant(exgrid1.Columns().Add("Pos.6")); com_Column6 = var_Column6;
		com_Column6.FormatColumn("'<b>'+ 1 ropos '</b>:<fgcolor=FF0000>|A-Z|'");
		com_Column6.Def(17/*exCellValueFormat*/,COMVariant::createFromInt(1));
		com_Column6.Position(5);
		com_Column6.Width(48);
		com_Column6.AllowSizing(false);
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Root 1");
		com_Items.InsertItem(h,,"Child 1");
		com_Items.InsertItem(h,,"Child 2");
		com_Items.ExpandItem(h,true);
		h = com_Items.AddItem("Root 2");
		com_Items.InsertItem(h,,"Child 1");
		com_Items.InsertItem(h,,"Child 2");
	exgrid1.ApplyFilter();
	exgrid1.EndUpdate();
}
694
Is it possible to auto-numbering the children items too

public void init()
{
	COM com_Column,com_Column1,com_Column2,com_Column3,com_Column4,com_Column5,com_Items;
	anytype var_Column,var_Column1,var_Column2,var_Column3,var_Column4,var_Column5,var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.LinesAtRoot(-1/*exLinesAtRoot*/);
	exgrid1.Columns().Add("Items");
	var_Column = COM::createFromVariant(exgrid1.Columns().Add("Pos.1")); com_Column = var_Column;
		com_Column.FormatColumn("1 rpos ''");
		com_Column.Position(0);
		com_Column.Width(32);
		com_Column.AllowSizing(false);
	var_Column1 = COM::createFromVariant(exgrid1.Columns().Add("Pos.2")); com_Column1 = var_Column1;
		com_Column1.FormatColumn("1 rpos ':'");
		com_Column1.Position(1);
		com_Column1.Width(32);
		com_Column1.AllowSizing(false);
	var_Column2 = COM::createFromVariant(exgrid1.Columns().Add("Pos.3")); com_Column2 = var_Column2;
		com_Column2.FormatColumn("1 rpos ':|A-Z'");
		com_Column2.Position(2);
		com_Column2.Width(32);
		com_Column2.AllowSizing(false);
	var_Column3 = COM::createFromVariant(exgrid1.Columns().Add("Pos.4")); com_Column3 = var_Column3;
		com_Column3.FormatColumn("1 rpos '|A-Z|'");
		com_Column3.Position(3);
		com_Column3.Width(32);
		com_Column3.AllowSizing(false);
	var_Column4 = COM::createFromVariant(exgrid1.Columns().Add("Pos.5")); com_Column4 = var_Column4;
		com_Column4.FormatColumn("'<font Tahoma;7>' + 1 rpos '-<b>||A-Z'");
		com_Column4.Def(17/*exCellValueFormat*/,COMVariant::createFromInt(1));
		com_Column4.Position(4);
		com_Column4.Width(32);
		com_Column4.AllowSizing(false);
	var_Column5 = COM::createFromVariant(exgrid1.Columns().Add("Pos.6")); com_Column5 = var_Column5;
		com_Column5.FormatColumn("'<b>'+ 1 rpos '</b>:<fgcolor=FF0000>|A-Z|'");
		com_Column5.Def(17/*exCellValueFormat*/,COMVariant::createFromInt(1));
		com_Column5.Position(5);
		com_Column5.Width(48);
		com_Column5.AllowSizing(false);
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Root 1");
		com_Items.InsertItem(h,,"Child 1");
		com_Items.InsertItem(h,,"Child 2");
		com_Items.ExpandItem(h,true);
		h = com_Items.AddItem("Root 2");
		com_Items.InsertItem(h,,"Child 1");
		com_Items.InsertItem(h,,"Child 2");
	exgrid1.EndUpdate();
}
693
Is it possible to cancel or discard the values during validation

// ValidateValue event - Occurs before user changes the cell's value.
void onEvent_ValidateValue(int   _Item,int   _ColIndex,COMVariant   _NewValue,COMVariant /*bool*/   _Cancel)
{
	;
	print( "ValidateValue" );
	print( _NewValue );
	print( "Change the Cancel parameter for ValidateValue event to accept/decline the newly value. " );
	print( "The DiscardValidateValue restores back the previously values." );
	exgrid1.DiscardValidateValue();
}

public void init()
{
	COM com_Editor,com_Items;
	anytype var_Editor,var_Items;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.CauseValidateValue(-1/*exValidateCell*/);
	var_Editor = COM::createFromObject(COM::createFromVariant(exgrid1.Columns().Add("Date"))).Editor(); com_Editor = var_Editor;
	com_Editor.EditType(7/*DateType*/);
	var_Editor = COM::createFromObject(COM::createFromVariant(exgrid1.Columns().Add("Text"))).Editor(); com_Editor = var_Editor;
	com_Editor.EditType(1/*EditType*/);
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.CellValue(com_Items.AddItem(COMVariant::createFromDate(str2Date("1/1/2001",213))),COMVariant::createFromInt(1),"text");
		com_Items.CellValue(com_Items.AddItem(COMVariant::createFromDate(str2Date("1/1/2001",213))),COMVariant::createFromInt(1),"text");
		com_Items.CellValue(com_Items.AddItem(COMVariant::createFromDate(str2Date("1/1/2001",213))),COMVariant::createFromInt(1),"text");
		com_Items.CellValue(com_Items.AddItem(COMVariant::createFromDate(str2Date("1/1/2001",213))),COMVariant::createFromInt(1),"text");
		com_Items.CellValue(com_Items.AddItem(COMVariant::createFromDate(str2Date("1/1/2001",213))),COMVariant::createFromInt(1),"text");
	exgrid1.EndUpdate();
}
692
Is it possible to validate the values of the cells only when user leaves the focused item
// ValidateValue event - Occurs before user changes the cell's value.
void onEvent_ValidateValue(int   _Item,int   _ColIndex,COMVariant   _NewValue,COMVariant /*bool*/   _Cancel)
{
	;
	print( "ValidateValue" );
	print( _NewValue );
	print( "Change the Cancel parameter for ValidateValue event to accept/decline the newly value. " );
	_Cancel = true;
	print( "You can not leave the item/record until the Cancel is False." );
}

public void init()
{
	COM com_Editor,com_Items;
	anytype var_Editor,var_Items;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.CauseValidateValue(1/*exValidateItem*/);
	var_Editor = COM::createFromObject(COM::createFromVariant(exgrid1.Columns().Add("Date"))).Editor(); com_Editor = var_Editor;
	com_Editor.EditType(7/*DateType*/);
	var_Editor = COM::createFromObject(COM::createFromVariant(exgrid1.Columns().Add("Text"))).Editor(); com_Editor = var_Editor;
	com_Editor.EditType(1/*EditType*/);
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.CellValue(com_Items.AddItem(COMVariant::createFromDate(str2Date("1/1/2001",213))),COMVariant::createFromInt(1),"text");
		com_Items.CellValue(com_Items.AddItem(COMVariant::createFromDate(str2Date("1/1/2001",213))),COMVariant::createFromInt(1),"text");
		com_Items.CellValue(com_Items.AddItem(COMVariant::createFromDate(str2Date("1/1/2001",213))),COMVariant::createFromInt(1),"text");
		com_Items.CellValue(com_Items.AddItem(COMVariant::createFromDate(str2Date("1/1/2001",213))),COMVariant::createFromInt(1),"text");
		com_Items.CellValue(com_Items.AddItem(COMVariant::createFromDate(str2Date("1/1/2001",213))),COMVariant::createFromInt(1),"text");
	exgrid1.EndUpdate();
}
691
We would like to validate the values of the cells. Is it possible

// ValidateValue event - Occurs before user changes the cell's value.
void onEvent_ValidateValue(int   _Item,int   _ColIndex,COMVariant   _NewValue,COMVariant /*bool*/   _Cancel)
{
	;
	print( "ValidateValue" );
	print( _NewValue );
	print( "Change the Cancel parameter for ValidateValue event to accept/decline the newly value." );
	_Cancel = true;
	print( "You can not leave the cell until the Cancel is False." );
}

public void init()
{
	COM com_Editor,com_Items;
	anytype var_Editor,var_Items;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.CauseValidateValue(-1/*exValidateCell*/);
	var_Editor = COM::createFromObject(COM::createFromVariant(exgrid1.Columns().Add("Date"))).Editor(); com_Editor = var_Editor;
	com_Editor.EditType(7/*DateType*/);
	var_Editor = COM::createFromObject(COM::createFromVariant(exgrid1.Columns().Add("Text"))).Editor(); com_Editor = var_Editor;
	com_Editor.EditType(1/*EditType*/);
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.CellValue(com_Items.AddItem(COMVariant::createFromDate(str2Date("1/1/2001",213))),COMVariant::createFromInt(1),"text");
		com_Items.CellValue(com_Items.AddItem(COMVariant::createFromDate(str2Date("1/1/2001",213))),COMVariant::createFromInt(1),"text");
		com_Items.CellValue(com_Items.AddItem(COMVariant::createFromDate(str2Date("1/1/2001",213))),COMVariant::createFromInt(1),"text");
		com_Items.CellValue(com_Items.AddItem(COMVariant::createFromDate(str2Date("1/1/2001",213))),COMVariant::createFromInt(1),"text");
		com_Items.CellValue(com_Items.AddItem(COMVariant::createFromDate(str2Date("1/1/2001",213))),COMVariant::createFromInt(1),"text");
	exgrid1.EndUpdate();
}
690
Is there any way to add auto-numbering

public void init()
{
	COM com_Column,com_Columns,com_Items;
	anytype var_Column,var_Columns,var_Items;
	;

	super();

	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		com_Columns.Add("Items");
		var_Column = COM::createFromVariant(com_Columns.Add("Pos")); com_Column = var_Column;
			com_Column.FormatColumn("1 pos ''");
			com_Column.Position(0);
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.AddItem("Item 1");
		com_Items.AddItem("Item 2");
		com_Items.AddItem("Item 3");
}
689
Does your control supports multiple lines tooltip

public void init()
{
	str var_s;
	;

	super();

	exgrid1.HTMLPicture("pic1","c:\\exontrol\\images\\zipdisk.gif");
	exgrid1.ToolTipDelay(1);
	var_s = "<br><font Tahoma;10>This</font> is a <b>multi-lines</b> tooltip assigned to a column. The tooltip supports built-in HTML tags, i";
	var_s = var_s + "cons and pictures.<br><br><br><img>pic1</img> picture ... <br><br>";
	COM::createFromVariant(exgrid1.Columns().Add("tootip")).ToolTip(var_s);
}
688
How can I prevent highlighting the column from the cursor - point

public void init()
{
	str var_s;
	;

	super();

	var_s = "gBFLBCJwBAEHhEJAEGg4BI0IQAAYAQGKIYBkAKBQAGaAoDDUOQzQwAAxDKKUEwsACEIrjKCYVgOHYYRrIMYgBCMJhLEoaZLhEZRQiqDYtRDFQBSDDcPw/EaRZohGaYJg";
	var_s = var_s + "EgI=";
	exgrid1.VisualAppearance().Add(1,COMVariant::createFromStr(var_s));
	exgrid1.Background(32/*exCursorHoverColumn*/,0x1000000);
	COM::createFromVariant(exgrid1.Columns().Add("S")).Width(32);
	COM::createFromVariant(exgrid1.Columns().Add("Level 1")).LevelKey(COMVariant::createFromInt(1));
	COM::createFromVariant(exgrid1.Columns().Add("Level 2")).LevelKey(COMVariant::createFromInt(1));
	COM::createFromVariant(exgrid1.Columns().Add("Level 3")).LevelKey(COMVariant::createFromInt(1));
	COM::createFromVariant(exgrid1.Columns().Add("E1")).Width(32);
	COM::createFromVariant(exgrid1.Columns().Add("E2")).Width(32);
	COM::createFromVariant(exgrid1.Columns().Add("E3")).Width(32);
	COM::createFromVariant(exgrid1.Columns().Add("E4")).Width(32);
}
687
Is it possible display numbers in the same format no matter of regional settings in the control panel

public void init()
{
	COM com_Items;
	anytype var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	COM::createFromVariant(exgrid1.Columns().Add("Def")).Def(17/*exCellValueFormat*/,COMVariant::createFromInt(1));
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem(COMVariant::createFromReal(100000.27));
		com_Items.FormatCell(h,COMVariant::createFromInt(0),"(value format '') +  ' <fgcolor=808080>(default positive)'");
		h = com_Items.AddItem(COMVariant::createFromReal(100000.27));
		com_Items.FormatCell(h,COMVariant::createFromInt(0),"(value format '2|.|3|,|1|1')");
		h = com_Items.AddItem(COMVariant::createFromReal(-100000.27));
		com_Items.FormatCell(h,COMVariant::createFromInt(0),"(value format '') +  ' <fgcolor=808080>(default negative)'");
		h = com_Items.AddItem(COMVariant::createFromReal(-100000.27));
		com_Items.FormatCell(h,COMVariant::createFromInt(0),"(value format '2|.|3|,|1|1')");
	exgrid1.EndUpdate();
}
686
Is it possible to add a 0 for numbers less than 1 instead .7 to show 0.8

public void init()
{
	COM com_Items;
	anytype var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	COM::createFromVariant(exgrid1.Columns().Add("Def")).Def(17/*exCellValueFormat*/,COMVariant::createFromInt(1));
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem(COMVariant::createFromReal(0.27));
		com_Items.FormatCell(h,COMVariant::createFromInt(0),"(value format '') +  ' <fgcolor=808080>(default)'");
		h = com_Items.AddItem(COMVariant::createFromReal(0.27));
		com_Items.FormatCell(h,COMVariant::createFromInt(0),"(value format '|||||0') +  ' <fgcolor=808080>(Display no leading zeros)'");
	exgrid1.EndUpdate();
}
685
How can I specify the format for negative numbers

public void init()
{
	COM com_Items;
	anytype var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	COM::createFromVariant(exgrid1.Columns().Add("Def")).Def(17/*exCellValueFormat*/,COMVariant::createFromInt(1));
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem(COMVariant::createFromReal(-100000.27));
		com_Items.FormatCell(h,COMVariant::createFromInt(0),"(value format '') +  ' <fgcolor=808080>(default)'");
		h = com_Items.AddItem(COMVariant::createFromReal(-100000.27));
		com_Items.FormatCell(h,COMVariant::createFromInt(0),"(value format '||||1') +  ' <fgcolor=808080>(Negative sign, number; for example, -1.1)'");
	exgrid1.EndUpdate();
}
684
Is it possible to change the grouping character when display numbers

public void init()
{
	COM com_Items;
	anytype var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	COM::createFromVariant(exgrid1.Columns().Add("Def")).Def(17/*exCellValueFormat*/,COMVariant::createFromInt(1));
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem(COMVariant::createFromReal(100000.27));
		com_Items.FormatCell(h,COMVariant::createFromInt(0),"(value format '') +  ' <fgcolor=808080>(default)'");
		h = com_Items.AddItem(COMVariant::createFromReal(100000.27));
		com_Items.FormatCell(h,COMVariant::createFromInt(0),"(value format '|||-') +  ' <fgcolor=808080>(grouping character is -)'");
	exgrid1.EndUpdate();
}
683
How can I display numbers with 2 digits in each group

public void init()
{
	COM com_Items;
	anytype var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	COM::createFromVariant(exgrid1.Columns().Add("Def")).Def(17/*exCellValueFormat*/,COMVariant::createFromInt(1));
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem(COMVariant::createFromReal(100000.27));
		com_Items.FormatCell(h,COMVariant::createFromInt(0),"(value format '') +  ' <fgcolor=808080>(default)'");
		h = com_Items.AddItem(COMVariant::createFromReal(100000.27));
		com_Items.FormatCell(h,COMVariant::createFromInt(0),"(value format '||2') +  ' <fgcolor=808080>(grouping by 2 digits)'");
	exgrid1.EndUpdate();
}
682
How can I display my numbers using a different decimal separator

public void init()
{
	COM com_Items;
	anytype var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	COM::createFromVariant(exgrid1.Columns().Add("Def")).Def(17/*exCellValueFormat*/,COMVariant::createFromInt(1));
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem(COMVariant::createFromReal(100.27));
		com_Items.FormatCell(h,COMVariant::createFromInt(0),"(value format '') +  ' <fgcolor=808080>(default)'");
		h = com_Items.AddItem(COMVariant::createFromReal(100.27));
		com_Items.FormatCell(h,COMVariant::createFromInt(0),"(value format '|;') +  ' <fgcolor=808080>(decimal separator is <b>;</b>)'");
	exgrid1.EndUpdate();
}
681
Is it possible to display the numbers using 3 (three) digits

public void init()
{
	COM com_Items;
	anytype var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	COM::createFromVariant(exgrid1.Columns().Add("Def")).Def(17/*exCellValueFormat*/,COMVariant::createFromInt(1));
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem(COMVariant::createFromReal(100.27));
		com_Items.FormatCell(h,COMVariant::createFromInt(0),"(value format '') +  ' <fgcolor=808080>(default)'");
		h = com_Items.AddItem(COMVariant::createFromReal(100.27));
		com_Items.FormatCell(h,COMVariant::createFromInt(0),"(value format '3') +  ' <fgcolor=808080>(3 digits)'");
		h = com_Items.AddItem(COMVariant::createFromReal(100.27));
		com_Items.FormatCell(h,COMVariant::createFromInt(0),"(value format 2) +  '  <fgcolor=808080>(2 digits)'");
		h = com_Items.AddItem(COMVariant::createFromReal(100.27));
		com_Items.FormatCell(h,COMVariant::createFromInt(0),"(value format 1) +  ' <fgcolor=808080>(1 digit)'");
	exgrid1.EndUpdate();
}
680
Is there any option to show the tooltip programmatically

// MouseMove event - Occurs when the user moves the mouse.
void onEvent_MouseMove(int   _Button,int   _Shift,int   _X,int   _Y)
{
	;
	exgrid1.ShowToolTip(exgrid1.ItemFromPoint(-1,-1,c,hit),"","8","8");
}

public void init()
{
	COM com_Items;
	anytype var_Items;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.Columns().Add("Def");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.AddItem("Item 1");
		com_Items.AddItem("Item 2");
		com_Items.AddItem("Item 3");
	exgrid1.EndUpdate();
}
679
How can I specify the column's width to be the same for all columns

public void init()
{
	COM com_Columns;
	anytype var_Columns;
	;

	super();

	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		com_Columns.Add("A");
		com_Columns.Add("B");
		com_Columns.Add("C");
	exgrid1.DrawGridLines(-1/*exAllLines*/);
	exgrid1.ColumnAutoResize(true);
}
678
How can I set the column's width to my desired width

public void init()
{
	COM com_Columns;
	anytype var_Columns;
	;

	super();

	exgrid1.ColumnAutoResize(false);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		COM::createFromVariant(com_Columns.Add("A")).Width(128);
		COM::createFromVariant(com_Columns.Add("B")).Width(128);
	exgrid1.DrawGridLines(-1/*exAllLines*/);
}
677
Is it possible to format numbers

public void init()
{
	COM com_Column,com_Column1,com_Column2,com_Column3,com_Columns,com_Editor,com_Items;
	anytype var_Column,var_Column1,var_Column2,var_Column3,var_Columns,var_Editor,var_Items;
	int h,h1;
	str var_s;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.MarkSearchColumn(false);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		com_Columns.Add("Name");
		var_Column = COM::createFromVariant(com_Columns.Add("A")); com_Column = var_Column;
			com_Column.SortType(1/*SortNumeric*/);
			com_Column.AllowSizing(false);
			com_Column.Width(36);
			com_Column.FormatColumn("len(value) ? value + ' +'");
			var_Editor = COM::createFromObject(com_Column.Editor()); com_Editor = var_Editor;
			com_Editor.EditType(4/*SpinType*/);
		var_Column1 = COM::createFromVariant(com_Columns.Add("B")); com_Column1 = var_Column1;
			com_Column1.SortType(1/*SortNumeric*/);
			com_Column1.AllowSizing(false);
			com_Column1.Width(36);
			com_Column1.FormatColumn("len(value) ? value + ' +'");
			var_Editor = COM::createFromObject(com_Column1.Editor()); com_Editor = var_Editor;
			com_Editor.EditType(4/*SpinType*/);
		var_Column2 = COM::createFromVariant(com_Columns.Add("C")); com_Column2 = var_Column2;
			com_Column2.SortType(1/*SortNumeric*/);
			com_Column2.AllowSizing(false);
			com_Column2.Width(36);
			com_Column2.FormatColumn("len(value) ? value + ' ='");
			var_Editor = COM::createFromObject(com_Column2.Editor()); com_Editor = var_Editor;
			com_Editor.EditType(4/*SpinType*/);
		var_Column3 = COM::createFromVariant(com_Columns.Add("A+B+C")); com_Column3 = var_Column3;
			com_Column3.SortType(1/*SortNumeric*/);
			com_Column3.Width(64);
			com_Column3.ComputedField("dbl(%1)+dbl(%2)+dbl(%3)");
			var_s = "type(value) in (0,1) ? 'null' : ( dbl(value)<0 ? '<fgcolor=FF0000>'+ (value format '2|.|3|,|1' ) : (dbl(value)>0 ? '<fgcolor=000";
			var_s = var_s + "0FF>+'+(value format '2|.|3|,' ): '0.00') )";
			com_Column3.FormatColumn(var_s);
			com_Column3.Def(17/*exCellValueFormat*/,COMVariant::createFromInt(1));
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Root");
		com_Items.CellValueFormat(h,COMVariant::createFromInt(4),2/*exComputedField*/);
		h1 = com_Items.InsertItem(h,,"Child 1");
		com_Items.CellValue(h1,COMVariant::createFromInt(1),COMVariant::createFromInt(7));
		com_Items.CellValue(h1,COMVariant::createFromInt(2),COMVariant::createFromInt(3));
		com_Items.CellValue(h1,COMVariant::createFromInt(3),COMVariant::createFromInt(1));
		h1 = com_Items.InsertItem(h,,"Child 2");
		com_Items.CellValue(h1,COMVariant::createFromInt(1),COMVariant::createFromInt(-2));
		com_Items.CellValue(h1,COMVariant::createFromInt(2),COMVariant::createFromInt(-2));
		com_Items.CellValue(h1,COMVariant::createFromInt(3),COMVariant::createFromInt(-4));
		h1 = com_Items.InsertItem(h,,"Child 3");
		com_Items.CellValue(h1,COMVariant::createFromInt(1),COMVariant::createFromInt(2));
		com_Items.CellValue(h1,COMVariant::createFromInt(2),COMVariant::createFromInt(2));
		com_Items.CellValue(h1,COMVariant::createFromInt(3),COMVariant::createFromInt(-4));
		com_Items.ExpandItem(h,true);
	exgrid1.EndUpdate();
}
676
How can I collapse all items

public void init()
{
	COM com_Items;
	anytype var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.LinesAtRoot(-1/*exLinesAtRoot*/);
	exgrid1.Columns().Add("Items");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Root 1");
		com_Items.InsertItem(h,,"Child 1");
		com_Items.InsertItem(h,,"Child 2");
		h = com_Items.AddItem("Root 2");
		com_Items.InsertItem(h,,"Child 1");
		com_Items.InsertItem(h,,"Child 2");
		com_Items.ExpandItem(0,false);
	exgrid1.EndUpdate();
}
675
How can I expand all items

public void init()
{
	COM com_Items;
	anytype var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.LinesAtRoot(-1/*exLinesAtRoot*/);
	exgrid1.Columns().Add("Items");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Root 1");
		com_Items.InsertItem(h,,"Child 1");
		com_Items.InsertItem(h,,"Child 2");
		h = com_Items.AddItem("Root 2");
		com_Items.InsertItem(h,,"Child 1");
		com_Items.InsertItem(h,,"Child 2");
		com_Items.ExpandItem(0,true);
	exgrid1.EndUpdate();
}
674
Can I display a total field without having to add a child item

public void init()
{
	COM com_Column,com_Editor,com_Items;
	anytype var_Column,var_Editor,var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	var_Column = COM::createFromVariant(exgrid1.Columns().Add("Numbers")); com_Column = var_Column;
		com_Column.SortType(1/*SortNumeric*/);
		var_Editor = com_Column.Editor(); com_Editor = var_Editor;
			com_Editor.EditType(4/*SpinType*/);
			com_Editor.Numeric(1/*exFloat*/);
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.AddItem(COMVariant::createFromInt(1));
		com_Items.AddItem(COMVariant::createFromInt(2));
		com_Items.AddItem(COMVariant::createFromInt(3));
		com_Items.AddItem(COMVariant::createFromInt(4));
		com_Items.LockedItemCount(2/*exBottom*/,1);
		h = com_Items.LockedItem(2/*exBottom*/,0);
		com_Items.CellValue(h,COMVariant::createFromInt(0),"sum(all,dir,dbl(%0))");
		com_Items.SortableItem(h,false);
		com_Items.CellValueFormat(h,COMVariant::createFromInt(0),4/*exTotalField*/);
		com_Items.CellHAlignment(h,COMVariant::createFromInt(0),2/*RightAlignment*/);
		com_Items.FormatCell(h,COMVariant::createFromInt(0),"'SUM: '+value");
	exgrid1.EndUpdate();
}
673
Can I display the number of child items

public void init()
{
	COM com_Items;
	COMVariant hx;
	anytype var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.LinesAtRoot(1/*exGroupLinesAtRoot*/);
	exgrid1.Columns().Add("");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Root 1");
		hx = com_Items.SplitCell(h,COMVariant::createFromInt(0));
		com_Items.CellValue(COMVariant::createFromInt(0),hx,"count(current,dir,1)");
		com_Items.CellValueFormat(COMVariant::createFromInt(0),hx,4/*exTotalField*/);
		com_Items.FormatCell(COMVariant::createFromInt(0),hx,"'Childs: ' + value");
		com_Items.InsertItem(h,,"Child 1");
		com_Items.InsertItem(h,,"Child 2");
		com_Items.ExpandItem(h,true);
		h = com_Items.AddItem("Root 2");
		hx = com_Items.SplitCell(h,COMVariant::createFromInt(0));
		com_Items.CellValue(COMVariant::createFromInt(0),hx,"count(current,dir,1)");
		com_Items.CellValueFormat(COMVariant::createFromInt(0),hx,4/*exTotalField*/);
		com_Items.FormatCell(COMVariant::createFromInt(0),hx,"'Childs: ' + value");
		com_Items.InsertItem(h,,"Child 1");
		com_Items.InsertItem(h,,"Child 2");
		com_Items.InsertItem(h,,"Child 3");
		com_Items.InsertItem(h,,"Child 4");
	exgrid1.EndUpdate();
}
672
My field does not display the correctly computed value if I enter data using the control's editors ( concatenation of strings ). What am I doing wrong

public void init()
{
	COM com_Editor,com_Editor1,com_Items;
	anytype var_Editor,var_Editor1,var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.Columns().Add("T");
	var_Editor = COM::createFromVariant(exgrid1.Columns().Add("A")).Editor(); com_Editor = var_Editor;
		com_Editor.Numeric(true);
		com_Editor.EditType(4/*SpinType*/);
	var_Editor1 = COM::createFromVariant(exgrid1.Columns().Add("B")).Editor(); com_Editor1 = var_Editor1;
		com_Editor1.Numeric(true);
		com_Editor1.EditType(4/*SpinType*/);
	exgrid1.Columns().Add("A+B");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Incorrect");
		com_Items.CellToolTip(h,COMVariant::createFromInt(0),"Just type a number in the column A or B. The result will be concaternated");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"10");
		com_Items.CellValue(h,COMVariant::createFromInt(2),"20");
		com_Items.CellValue(h,COMVariant::createFromInt(3),"currency(%1+%2)");
		com_Items.CellValueFormat(h,COMVariant::createFromInt(3),2/*exComputedField*/);
		h = com_Items.AddItem("Correct");
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(10));
		com_Items.CellValue(h,COMVariant::createFromInt(2),COMVariant::createFromInt(20));
		com_Items.CellValue(h,COMVariant::createFromInt(3),"currency(dbl(%1)+dbl(%2))");
		com_Items.CellValueFormat(h,COMVariant::createFromInt(3),2/*exComputedField*/);
	exgrid1.EndUpdate();
}
671
The CellValue/CellCaption property gets the result of a computed/total field with text formatting. Is it possible to get that value without text formatting

public void init()
{
	COM com_Editor,com_Items;
	anytype var_Editor,var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	var_Editor = COM::createFromObject(COM::createFromVariant(exgrid1.Columns().Add("A"))).Editor(); com_Editor = var_Editor;
	com_Editor.EditType(4/*SpinType*/);
	var_Editor = COM::createFromObject(COM::createFromVariant(exgrid1.Columns().Add("B"))).Editor(); com_Editor = var_Editor;
	com_Editor.EditType(4/*SpinType*/);
	exgrid1.Columns().Add("A+B");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem(COMVariant::createFromInt(10));
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(20));
		com_Items.CellValueFormat(h,COMVariant::createFromInt(2),2/*exComputedField*/);
		com_Items.CellValue(h,COMVariant::createFromInt(2),"currency(dbl(%0)+dbl(%1))");
		print( "CellCaption returns " );
		print( com_Items.CellCaption(h,COMVariant::createFromInt(2)) );
		print( "CellValue returns " );
		print( com_Items.CellValue(h,COMVariant::createFromInt(2)) );
		print( "ComputeValue returns " );
		print( com_Items.ComputeValue("dbl(%0)+dbl(%1)",h,COMVariant::createFromInt(0),com_Items.CellValueFormat(h,COMVariant::createFromInt(2))) );
	exgrid1.EndUpdate();
}
670
Can I get the result of a specified formula as your control does using the ComputedField property
public void init()
{
	COM com_Items;
	anytype var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.Columns().Add("A");
	exgrid1.Columns().Add("B");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem(COMVariant::createFromInt(10));
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(20));
		print( "A+B is " );
		print( com_Items.ComputeValue("dbl(%0)+dbl(%1)",h,COMVariant::createFromInt(0),COMVariant::createFromInt(2)) );
	exgrid1.EndUpdate();
}
669
Is it possible to get the text without HTML formatting

public void init()
{
	COM com_Items;
	anytype var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.Columns().Add("");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("<b>bold</b>");
		print( com_Items.ComputeValue(com_Items.CellValue(h,COMVariant::createFromInt(0)),h,COMVariant::createFromInt(0),COMVariant::createFromInt(1)) );
	exgrid1.EndUpdate();
}
668
Can I specify an item to be a separator

public void init()
{
	COM com_Items;
	anytype var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.TreeColumnIndex(-1);
	exgrid1.SortOnClick(0/*exNoSort*/);
	exgrid1.Columns().Add("Numbers");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.AddItem(COMVariant::createFromInt(1));
		com_Items.AddItem(COMVariant::createFromInt(2));
		h = com_Items.AddItem("separator");
		com_Items.SelectableItem(h,false);
		com_Items.ItemDivider(h,0);
		com_Items.ItemDividerLineAlignment(h,1/*DividerCenter*/);
		com_Items.ItemDividerLine(h,5/*ThinLine*/);
		com_Items.CellHAlignment(h,COMVariant::createFromInt(0),1/*CenterAlignment*/);
		com_Items.AddItem(COMVariant::createFromInt(3));
		com_Items.AddItem(COMVariant::createFromInt(4));
	exgrid1.EndUpdate();
}
667
How can I count only non-zero values

public void init()
{
	COM com_Items;
	anytype var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	COM::createFromVariant(exgrid1.Columns().Add("Numbers")).SortType(1/*SortNumeric*/);
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.AddItem(COMVariant::createFromInt(1));
		com_Items.AddItem(COMVariant::createFromInt(2));
		com_Items.AddItem(COMVariant::createFromInt(0));
		com_Items.AddItem(COMVariant::createFromInt(0));
		com_Items.AddItem(COMVariant::createFromInt(0));
		com_Items.AddItem(COMVariant::createFromInt(0));
		com_Items.AddItem(COMVariant::createFromInt(3));
		com_Items.AddItem(COMVariant::createFromInt(4));
		h = com_Items.AddItem("sum(all,dir,dbl(%0)?1:0)");
		com_Items.SortableItem(h,false);
		com_Items.CellValueFormat(h,COMVariant::createFromInt(0),4/*exTotalField*/);
		com_Items.CellHAlignment(h,COMVariant::createFromInt(0),2/*RightAlignment*/);
		com_Items.FormatCell(h,COMVariant::createFromInt(0),"'COUNT non-zero: '+value");
	exgrid1.EndUpdate();
}
666
How can I add a AVG ( average ) field

public void init()
{
	COM com_Items;
	anytype var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	COM::createFromVariant(exgrid1.Columns().Add("Numbers")).SortType(1/*SortNumeric*/);
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.AddItem(COMVariant::createFromInt(1));
		com_Items.AddItem(COMVariant::createFromInt(2));
		com_Items.AddItem(COMVariant::createFromInt(3));
		com_Items.AddItem(COMVariant::createFromInt(4));
		h = com_Items.AddItem("avg(all,dir,dbl(%0))");
		com_Items.SortableItem(h,false);
		com_Items.CellValueFormat(h,COMVariant::createFromInt(0),4/*exTotalField*/);
		com_Items.CellHAlignment(h,COMVariant::createFromInt(0),2/*RightAlignment*/);
		com_Items.FormatCell(h,COMVariant::createFromInt(0),"'AVG: '+value");
	exgrid1.EndUpdate();
}
665
How can I add a COUNT field

public void init()
{
	COM com_Items;
	anytype var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	COM::createFromVariant(exgrid1.Columns().Add("Numbers")).SortType(1/*SortNumeric*/);
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.AddItem(COMVariant::createFromInt(1));
		com_Items.AddItem(COMVariant::createFromInt(2));
		com_Items.AddItem(COMVariant::createFromInt(3));
		com_Items.AddItem(COMVariant::createFromInt(4));
		h = com_Items.AddItem("count(all,dir,0)");
		com_Items.SortableItem(h,false);
		com_Items.CellValueFormat(h,COMVariant::createFromInt(0),4/*exTotalField*/);
		com_Items.CellHAlignment(h,COMVariant::createFromInt(0),2/*RightAlignment*/);
		com_Items.FormatCell(h,COMVariant::createFromInt(0),"'COUNT: '+value");
	exgrid1.EndUpdate();
}
664
How can I add a MAX field

public void init()
{
	COM com_Items;
	anytype var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	COM::createFromVariant(exgrid1.Columns().Add("Numbers")).SortType(1/*SortNumeric*/);
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.AddItem(COMVariant::createFromInt(1));
		com_Items.AddItem(COMVariant::createFromInt(2));
		com_Items.AddItem(COMVariant::createFromInt(3));
		com_Items.AddItem(COMVariant::createFromInt(4));
		h = com_Items.AddItem("max(all,dir,dbl(%0))");
		com_Items.SortableItem(h,false);
		com_Items.CellValueFormat(h,COMVariant::createFromInt(0),4/*exTotalField*/);
		com_Items.CellHAlignment(h,COMVariant::createFromInt(0),2/*RightAlignment*/);
		com_Items.FormatCell(h,COMVariant::createFromInt(0),"'MAX: '+value");
	exgrid1.EndUpdate();
}
663
How can I add a MIN or MAX field (for numbers)

public void init()
{
	COM com_Items;
	anytype var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	COM::createFromVariant(exgrid1.Columns().Add("Numbers")).SortType(1/*SortNumeric*/);
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.AddItem(COMVariant::createFromInt(11));
		com_Items.AddItem(COMVariant::createFromInt(21));
		com_Items.AddItem(COMVariant::createFromInt(3));
		com_Items.AddItem(COMVariant::createFromInt(4));
		h = com_Items.AddItem("min(all,dir,dbl(%0))");
		com_Items.SortableItem(h,false);
		com_Items.CellValueFormat(h,COMVariant::createFromInt(0),4/*exTotalField*/);
		com_Items.CellHAlignment(h,COMVariant::createFromInt(0),2/*RightAlignment*/);
		com_Items.FormatCell(h,COMVariant::createFromInt(0),"'MIN: '+value");
		h = com_Items.AddItem("max(all,dir,dbl(%0))");
		com_Items.SortableItem(h,false);
		com_Items.CellValueFormat(h,COMVariant::createFromInt(0),4/*exTotalField*/);
		com_Items.CellHAlignment(h,COMVariant::createFromInt(0),2/*RightAlignment*/);
		com_Items.FormatCell(h,COMVariant::createFromInt(0),"'MAX: '+value");
	exgrid1.EndUpdate();
}
662
How can I add a SUM field

public void init()
{
	COM com_Items;
	anytype var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	COM::createFromVariant(exgrid1.Columns().Add("Numbers")).SortType(1/*SortNumeric*/);
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.AddItem(COMVariant::createFromInt(1));
		com_Items.AddItem(COMVariant::createFromInt(2));
		com_Items.AddItem(COMVariant::createFromInt(3));
		com_Items.AddItem(COMVariant::createFromInt(4));
		h = com_Items.AddItem("sum(all,dir,dbl(%0))");
		com_Items.SortableItem(h,false);
		com_Items.CellValueFormat(h,COMVariant::createFromInt(0),4/*exTotalField*/);
		com_Items.CellHAlignment(h,COMVariant::createFromInt(0),2/*RightAlignment*/);
		com_Items.FormatCell(h,COMVariant::createFromInt(0),"'SUM: '+value");
	exgrid1.EndUpdate();
}
661
How can I add total and subtotals fields

// Change event - Occurs when the user changes the cell's content.
void onEvent_Change(int   _Item,int   _ColIndex,COMVariant /*variant*/   _NewValue)
{
	;
	exgrid1.Refresh();
}

public void init()
{
	COM com_Column,com_Editor,com_Items;
	anytype var_Column,var_Editor,var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.LinesAtRoot(1/*exGroupLinesAtRoot*/);
	exgrid1.Columns().Add("Members");
	var_Column = COM::createFromVariant(exgrid1.Columns().Add("Values")); com_Column = var_Column;
		com_Column.FormatColumn("currency(value)");
		var_Editor = com_Column.Editor(); com_Editor = var_Editor;
			com_Editor.EditType(4/*SpinType*/);
			com_Editor.Numeric(true);
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Group 1");
		com_Items.ItemBold(h,true);
		com_Items.CellEditorVisible(h,COMVariant::createFromInt(1),false);
		com_Items.CellValue(h,COMVariant::createFromInt(1),"sum(current,dir,dbl(%1))");
		com_Items.CellValueFormat(h,COMVariant::createFromInt(1),5/*exTotalField | exHTML*/);
		com_Items.CellHAlignment(h,COMVariant::createFromInt(1),2/*RightAlignment*/);
		com_Items.CellValue(com_Items.InsertItem(h,,"Child 1"),COMVariant::createFromInt(1),COMVariant::createFromInt(10));
		com_Items.CellValue(com_Items.InsertItem(h,,"Child 2"),COMVariant::createFromInt(1),COMVariant::createFromInt(20));
		com_Items.CellValue(com_Items.InsertItem(h,,"Child 3"),COMVariant::createFromInt(1),COMVariant::createFromInt(30));
		com_Items.ExpandItem(h,true);
		h = com_Items.AddItem("Group 2");
		com_Items.ItemBold(h,true);
		com_Items.CellEditorVisible(h,COMVariant::createFromInt(1),false);
		com_Items.CellValue(h,COMVariant::createFromInt(1),"sum(current,dir,dbl(%1))");
		com_Items.CellValueFormat(h,COMVariant::createFromInt(1),5/*exTotalField | exHTML*/);
		com_Items.CellHAlignment(h,COMVariant::createFromInt(1),2/*RightAlignment*/);
		com_Items.CellValue(com_Items.InsertItem(h,,"Child 1"),COMVariant::createFromInt(1),COMVariant::createFromInt(5));
		com_Items.CellValue(com_Items.InsertItem(h,,"Child 2"),COMVariant::createFromInt(1),COMVariant::createFromInt(15));
		com_Items.CellValue(com_Items.InsertItem(h,,"Child 3"),COMVariant::createFromInt(1),COMVariant::createFromInt(35));
		h = com_Items.AddItem("total");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"sum(all,rec,dbl(%1))");
		com_Items.CellValueFormat(h,COMVariant::createFromInt(1),5/*exTotalField | exHTML*/);
		com_Items.CellEditorVisible(h,COMVariant::createFromInt(1),false);
		com_Items.FormatCell(h,COMVariant::createFromInt(1),"'Total: <b>' + currency(value)");
		com_Items.CellHAlignment(h,COMVariant::createFromInt(1),2/*RightAlignment*/);
		com_Items.ItemDivider(h,1);
		com_Items.ItemDividerLineAlignment(h,1/*DividerCenter*/);
		com_Items.ItemDividerLine(h,2/*DoubleLine*/);
		com_Items.SortableItem(h,false);
	exgrid1.EndUpdate();
}
660
Is is possible to have subtotal items, and a grand total item

// Change event - Occurs when the user changes the cell's content.
void onEvent_Change(int   _Item,int   _ColIndex,COMVariant /*variant*/   _NewValue)
{
	;
	exgrid1.Refresh();
}

public void init()
{
	COM com_Column,com_Editor,com_Items;
	anytype var_Column,var_Editor,var_Items;
	int h,hT;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.BackColor(WinApi::RGB2int(255,255,255));
	exgrid1.LinesAtRoot(1/*exGroupLinesAtRoot*/);
	exgrid1.ShowFocusRect(false);
	exgrid1.Columns().Add("Members");
	var_Column = COM::createFromVariant(exgrid1.Columns().Add("Values")); com_Column = var_Column;
		com_Column.FormatColumn("currency(value)");
		var_Editor = com_Column.Editor(); com_Editor = var_Editor;
			com_Editor.EditType(4/*SpinType*/);
			com_Editor.Numeric(true);
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Group 1");
		com_Items.ItemBold(h,true);
		com_Items.SortableItem(h,false);
		com_Items.CellEditorVisible(h,COMVariant::createFromInt(1),false);
		com_Items.FormatCell(h,COMVariant::createFromInt(1)," ");
		com_Items.CellValue(com_Items.InsertItem(h,,"Child 1"),COMVariant::createFromInt(1),COMVariant::createFromInt(10));
		com_Items.CellValue(com_Items.InsertItem(h,,"Child 2"),COMVariant::createFromInt(1),COMVariant::createFromInt(20));
		com_Items.CellValue(com_Items.InsertItem(h,,"Child 3"),COMVariant::createFromInt(1),COMVariant::createFromInt(30));
		hT = com_Items.InsertItem(h,,"subtotal");
		com_Items.CellHAlignment(hT,COMVariant::createFromInt(1),2/*RightAlignment*/);
		com_Items.CellEditorVisible(hT,COMVariant::createFromInt(1),false);
		com_Items.CellValue(hT,COMVariant::createFromInt(1),"sum(parent,dir,dbl(%1))");
		com_Items.CellValueFormat(hT,COMVariant::createFromInt(1),5/*exTotalField | exHTML*/);
		com_Items.FormatCell(hT,COMVariant::createFromInt(1),"'subtotal: <b>' + currency(value)");
		com_Items.ItemDivider(hT,1);
		com_Items.ItemDividerLineAlignment(hT,1/*DividerCenter*/);
		com_Items.SortableItem(hT,false);
		com_Items.SelectableItem(hT,false);
		com_Items.ItemDividerLine(hT,3/*DotLine*/);
		com_Items.ExpandItem(h,true);
		h = com_Items.AddItem("Group 2");
		com_Items.ItemBold(h,true);
		com_Items.SortableItem(h,false);
		com_Items.FormatCell(h,COMVariant::createFromInt(1)," ");
		com_Items.CellEditorVisible(h,COMVariant::createFromInt(1),false);
		com_Items.CellValue(com_Items.InsertItem(h,,"Child 1"),COMVariant::createFromInt(1),COMVariant::createFromInt(15));
		com_Items.CellValue(com_Items.InsertItem(h,,"Child 2"),COMVariant::createFromInt(1),COMVariant::createFromInt(25));
		com_Items.CellValue(com_Items.InsertItem(h,,"Child 3"),COMVariant::createFromInt(1),COMVariant::createFromInt(18));
		hT = com_Items.InsertItem(h,,"subtotal");
		com_Items.CellHAlignment(hT,COMVariant::createFromInt(1),2/*RightAlignment*/);
		com_Items.CellEditorVisible(hT,COMVariant::createFromInt(1),false);
		com_Items.CellValue(hT,COMVariant::createFromInt(1),"sum(parent,dir,dbl(%1))");
		com_Items.CellValueFormat(hT,COMVariant::createFromInt(1),5/*exTotalField | exHTML*/);
		com_Items.FormatCell(hT,COMVariant::createFromInt(1),"'subtotal: <b>' + currency(value)");
		com_Items.ItemDivider(hT,1);
		com_Items.ItemDividerLineAlignment(hT,1/*DividerCenter*/);
		com_Items.ItemDividerLine(hT,3/*DotLine*/);
		com_Items.SortableItem(hT,false);
		com_Items.SelectableItem(hT,false);
		com_Items.ExpandItem(h,true);
		h = com_Items.AddItem("total");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"sum(all,rec,dbl(%1))");
		com_Items.CellValueFormat(h,COMVariant::createFromInt(1),5/*exTotalField | exHTML*/);
		com_Items.CellEditorVisible(h,COMVariant::createFromInt(1),false);
		com_Items.FormatCell(h,COMVariant::createFromInt(1),"'Total: <b><font ;11>' + currency(value)");
		com_Items.CellHAlignment(h,COMVariant::createFromInt(1),1/*CenterAlignment*/);
		com_Items.ItemDivider(h,1);
		com_Items.ItemDividerLineAlignment(h,1/*DividerCenter*/);
		com_Items.ItemDividerLine(h,2/*DoubleLine*/);
		com_Items.SortableItem(h,false);
		com_Items.SelectableItem(h,false);
	exgrid1.EndUpdate();
}
659
Is it possible to have a total field for each column

// Change event - Occurs when the user changes the cell's content.
void onEvent_Change(int   _Item,int   _ColIndex,COMVariant /*variant*/   _NewValue)
{
	;
	exgrid1.Refresh();
}

public void init()
{
	COM com_Column,com_Column1,com_Editor,com_Editor1,com_Items,com_Items1;
	anytype var_Column,var_Column1,var_Editor,var_Editor1,var_Items,var_Items1;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	var_Column = COM::createFromVariant(exgrid1.Columns().Add("C1")); com_Column = var_Column;
		var_Editor = com_Column.Editor(); com_Editor = var_Editor;
			com_Editor.Numeric(-1/*exInteger*/);
			com_Editor.EditType(4/*SpinType*/);
		com_Column.SortType(1/*SortNumeric*/);
	var_Column1 = COM::createFromVariant(exgrid1.Columns().Add("C2")); com_Column1 = var_Column1;
		var_Editor1 = com_Column1.Editor(); com_Editor1 = var_Editor1;
			com_Editor1.Numeric(-1/*exInteger*/);
			com_Editor1.EditType(4/*SpinType*/);
		com_Column1.SortType(1/*SortNumeric*/);
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.LockedItemCount(2/*exBottom*/,1);
		h = com_Items.LockedItem(2/*exBottom*/,0);
		com_Items.ItemBackColor(h,WinApi::RGB2int(240,240,240));
		com_Items.ItemBold(h,true);
		com_Items.CellValue(h,COMVariant::createFromInt(0),"sum(all,dir,dbl(%0))");
		com_Items.CellValueFormat(h,COMVariant::createFromInt(0),4/*exTotalField*/);
		com_Items.CellValue(h,COMVariant::createFromInt(1),"sum(all,dir,dbl(%1))");
		com_Items.CellValueFormat(h,COMVariant::createFromInt(1),4/*exTotalField*/);
	var_Items1 = exgrid1.Items(); com_Items1 = var_Items1;
		com_Items1.CellValue(com_Items1.AddItem(COMVariant::createFromInt(10)),COMVariant::createFromInt(1),COMVariant::createFromInt(12));
		com_Items1.CellValue(com_Items1.AddItem(COMVariant::createFromInt(25)),COMVariant::createFromInt(1),COMVariant::createFromInt(5));
		com_Items1.CellValue(com_Items1.AddItem(COMVariant::createFromInt(31)),COMVariant::createFromInt(1),COMVariant::createFromInt(17));
		com_Items1.CellValue(com_Items1.AddItem(COMVariant::createFromInt(48)),COMVariant::createFromInt(1),COMVariant::createFromInt(22));
	exgrid1.EndUpdate();
}
658
How can I add a total field for a DataSource being used

// Change event - Occurs when the user changes the cell's content.
void onEvent_Change(int   _Item,int   _ColIndex,COMVariant /*variant*/   _NewValue)
{
	;
	exgrid1.Refresh();
}

public void init()
{
	COM com_Items,com_rs;
	anytype rs,var_Items;
	int h;
	;

	super();

	exgrid1.ColumnAutoResize(false);
	exgrid1.ContinueColumnScroll(false);
	// Add 'Microsoft ActiveX Data Objects 6.1 Library(msado15.dll)' reference to your project.
	rs = COM::createFromObject(new ADODB.Recordset()); com_rs = rs;
		rs.Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Program Files\\Exontrol\\ExGrid\\Sample\\Access\\misc.accdb",3/*adOpenStatic*/,3/*adLockOptimistic*/);
	exgrid1.DataSource(rs);
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.LockedItemCount(0/*exTop*/,1);
		h = com_Items.LockedItem(0/*exTop*/,0);
		com_Items.ItemDivider(h,0);
		com_Items.CellValueFormat(h,COMVariant::createFromInt(0),5/*exTotalField | exHTML*/);
		com_Items.CellValue(h,COMVariant::createFromInt(0),"sum(all,dir,%1)");
}
657
How can I add a total field

// Change event - Occurs when the user changes the cell's content.
void onEvent_Change(int   _Item,int   _ColIndex,COMVariant /*variant*/   _NewValue)
{
	;
	exgrid1.Refresh();
}

public void init()
{
	COM com_Column,com_Editor,com_Items,com_Items1;
	anytype var_Column,var_Editor,var_Items,var_Items1;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	var_Column = COM::createFromVariant(exgrid1.Columns().Add("Numbers")); com_Column = var_Column;
		var_Editor = com_Column.Editor(); com_Editor = var_Editor;
			com_Editor.Numeric(-1/*exInteger*/);
			com_Editor.EditType(4/*SpinType*/);
		com_Column.SortType(1/*SortNumeric*/);
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.LockedItemCount(0/*exTop*/,1);
		h = com_Items.LockedItem(0/*exTop*/,0);
		com_Items.ItemBackColor(h,WinApi::RGB2int(240,240,240));
		com_Items.CellValue(h,COMVariant::createFromInt(0),"sum(all,dir,dbl(%0))");
		com_Items.CellValueFormat(h,COMVariant::createFromInt(0),4/*exTotalField*/);
		com_Items.CellHAlignment(h,COMVariant::createFromInt(0),2/*RightAlignment*/);
		com_Items.FormatCell(h,COMVariant::createFromInt(0),"'Total: '+value");
	var_Items1 = exgrid1.Items(); com_Items1 = var_Items1;
		com_Items1.AddItem(COMVariant::createFromInt(10));
		com_Items1.AddItem(COMVariant::createFromInt(25));
		com_Items1.AddItem(COMVariant::createFromInt(31));
		com_Items1.AddItem(COMVariant::createFromInt(48));
	exgrid1.EndUpdate();
}
656
How can I add a total field

// Change event - Occurs when the user changes the cell's content.
void onEvent_Change(int   _Item,int   _ColIndex,COMVariant /*variant*/   _NewValue)
{
	;
	exgrid1.Refresh();
}

public void init()
{
	COM com_Editor,com_Items;
	anytype var_Editor,var_Items;
	int h,hT;
	;

	super();

	exgrid1.BeginUpdate();
	var_Editor = COM::createFromVariant(exgrid1.Columns().Add("Items")).Editor(); com_Editor = var_Editor;
		com_Editor.EditType(4/*SpinType*/);
		com_Editor.Numeric(true);
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Group 1");
		com_Items.CellEditorVisible(h,COMVariant::createFromInt(0),false);
		com_Items.InsertItem(h,,COMVariant::createFromInt(10));
		com_Items.InsertItem(h,,COMVariant::createFromInt(20));
		com_Items.InsertItem(h,,COMVariant::createFromInt(30));
		hT = com_Items.InsertItem(h,,"sum(parent,dir,dbl(%0))");
		com_Items.CellEditorVisible(hT,COMVariant::createFromInt(0),false);
		com_Items.CellValueFormat(hT,COMVariant::createFromInt(0),5/*exTotalField | exHTML*/);
		com_Items.ItemDivider(hT,0);
		com_Items.ItemDividerLineAlignment(hT,2/*DividerTop*/);
		com_Items.SelectableItem(hT,false);
		com_Items.SortableItem(hT,false);
		com_Items.ExpandItem(h,true);
	exgrid1.EndUpdate();
}
655
Is it possible to specify the cell's value but still want to display some formatted text instead the value

public void init()
{
	COM com_Items;
	anytype var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.Columns().Add("Value");
	exgrid1.Columns().Add("FormatCell");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem(COMVariant::createFromInt(1));
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(12));
		com_Items.FormatCell(h,COMVariant::createFromInt(1),"currency(value)");
		h = com_Items.AddItem(COMVariant::createFromDate(str2Date("1/1/2001",213)));
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromDate(str2Date("1/1/2001",213)));
		com_Items.CellValueFormat(h,COMVariant::createFromInt(1),1/*exHTML*/);
		com_Items.FormatCell(h,COMVariant::createFromInt(1),"longdate(value) replace '2001' with '<b>2001</b>'");
	exgrid1.EndUpdate();
}
654
How can I simulate displaying groups

public void init()
{
	COM com_Columns,com_Items;
	anytype var_Columns,var_Items;
	int h,h1;
	;

	super();

	exgrid1.HasLines(0/*exNoLine*/);
	exgrid1.ScrollBySingleLine(true);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		com_Columns.Add("Name");
		com_Columns.Add("A");
		com_Columns.Add("B");
		com_Columns.Add("C");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Group 1");
		com_Items.CellHAlignment(h,COMVariant::createFromInt(0),1/*CenterAlignment*/);
		com_Items.ItemDivider(h,0);
		com_Items.ItemDividerLineAlignment(h,3/*DividerBoth*/);
		com_Items.ItemHeight(h,24);
		com_Items.SortableItem(h,false);
		h1 = com_Items.InsertItem(h,,"Child 1");
		com_Items.CellValue(h1,COMVariant::createFromInt(1),COMVariant::createFromInt(1));
		com_Items.CellValue(h1,COMVariant::createFromInt(2),COMVariant::createFromInt(2));
		com_Items.CellValue(h1,COMVariant::createFromInt(3),COMVariant::createFromInt(3));
		h1 = com_Items.InsertItem(h,,"Child 2");
		com_Items.CellValue(h1,COMVariant::createFromInt(1),COMVariant::createFromInt(4));
		com_Items.CellValue(h1,COMVariant::createFromInt(2),COMVariant::createFromInt(5));
		com_Items.CellValue(h1,COMVariant::createFromInt(3),COMVariant::createFromInt(6));
		com_Items.ExpandItem(h,true);
		h = com_Items.AddItem("Group 2");
		com_Items.CellHAlignment(h,COMVariant::createFromInt(0),1/*CenterAlignment*/);
		com_Items.ItemDivider(h,0);
		com_Items.ItemDividerLineAlignment(h,3/*DividerBoth*/);
		com_Items.ItemHeight(h,24);
		com_Items.SortableItem(h,false);
		h1 = com_Items.InsertItem(h,,"Child 1");
		com_Items.CellValue(h1,COMVariant::createFromInt(1),COMVariant::createFromInt(1));
		com_Items.CellValue(h1,COMVariant::createFromInt(2),COMVariant::createFromInt(2));
		com_Items.CellValue(h1,COMVariant::createFromInt(3),COMVariant::createFromInt(3));
		h1 = com_Items.InsertItem(h,,"Child 2");
		com_Items.CellValue(h1,COMVariant::createFromInt(1),COMVariant::createFromInt(4));
		com_Items.CellValue(h1,COMVariant::createFromInt(2),COMVariant::createFromInt(5));
		com_Items.CellValue(h1,COMVariant::createFromInt(3),COMVariant::createFromInt(6));
		com_Items.ExpandItem(h,true);
}
653
Is it possible to specify the cell's value but still want to display some formatted text instead the value

public void init()
{
	COM com_Column,com_Columns,com_Items;
	anytype var_Column,var_Columns,var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.MarkSearchColumn(false);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		com_Columns.Add("Name");
		var_Column = COM::createFromVariant(com_Columns.Add("Values")); com_Column = var_Column;
			com_Column.SortType(1/*SortNumeric*/);
			com_Column.AllowSizing(false);
			com_Column.Width(64);
			com_Column.FormatColumn("((0:=dbl(value)) < 10? '<fgcolor=808080><font ;7>' :'<b>') + currency(=:0)");
			com_Column.Def(17/*exCellValueFormat*/,COMVariant::createFromInt(1));
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Root");
		com_Items.FormatCell(h,COMVariant::createFromInt(1),"'<none>'");
		com_Items.CellValue(com_Items.InsertItem(h,,"Child 1"),COMVariant::createFromInt(1),COMVariant::createFromInt(10));
		com_Items.CellValue(com_Items.InsertItem(h,,"Child 2"),COMVariant::createFromInt(1),COMVariant::createFromInt(15));
		com_Items.CellValue(com_Items.InsertItem(h,,"Child 3"),COMVariant::createFromInt(1),COMVariant::createFromInt(25));
		com_Items.ExpandItem(h,true);
	exgrid1.EndUpdate();
}
652
I am using the FormatColumn to display the current currency, but would like hide some values. Is it possible

public void init()
{
	COM com_Column,com_Columns,com_Items;
	anytype var_Column,var_Columns,var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.MarkSearchColumn(false);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		com_Columns.Add("Name");
		var_Column = COM::createFromVariant(com_Columns.Add("Values")); com_Column = var_Column;
			com_Column.SortType(1/*SortNumeric*/);
			com_Column.AllowSizing(false);
			com_Column.Width(64);
			com_Column.FormatColumn("((0:=dbl(value)) < 10? '<fgcolor=808080><font ;7>' :'<b>') + currency(=:0)");
			com_Column.Def(17/*exCellValueFormat*/,COMVariant::createFromInt(1));
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Root");
		com_Items.FormatCell(h,COMVariant::createFromInt(1)," ");
		com_Items.CellValue(com_Items.InsertItem(h,,"Child 1"),COMVariant::createFromInt(1),COMVariant::createFromInt(10));
		com_Items.CellValue(com_Items.InsertItem(h,,"Child 2"),COMVariant::createFromInt(1),COMVariant::createFromInt(15));
		com_Items.CellValue(com_Items.InsertItem(h,,"Child 3"),COMVariant::createFromInt(1),COMVariant::createFromInt(25));
		com_Items.ExpandItem(h,true);
	exgrid1.EndUpdate();
}
651
How can I specify an item to be always the first item

public void init()
{
	COM com_Items;
	anytype var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.TreeColumnIndex(-1);
	COM::createFromVariant(exgrid1.Columns().Add("Numbers")).SortType(1/*SortNumeric*/);
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.AddItem(COMVariant::createFromInt(1));
		com_Items.AddItem(COMVariant::createFromInt(2));
		com_Items.AddItem(COMVariant::createFromInt(3));
		com_Items.AddItem(COMVariant::createFromInt(4));
		h = com_Items.AddItem("first");
		com_Items.ItemPosition(h,0);
		com_Items.CellHAlignment(h,COMVariant::createFromInt(0),2/*RightAlignment*/);
		com_Items.SortableItem(h,false);
		com_Items.SortChildren(0,COMVariant::createFromInt(0),false);
	exgrid1.EndUpdate();
}
650
How can I specify an item to be always the last item

public void init()
{
	COM com_Items;
	anytype var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.TreeColumnIndex(-1);
	COM::createFromVariant(exgrid1.Columns().Add("Numbers")).SortType(1/*SortNumeric*/);
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.AddItem(COMVariant::createFromInt(1));
		com_Items.AddItem(COMVariant::createFromInt(2));
		com_Items.AddItem(COMVariant::createFromInt(3));
		com_Items.AddItem(COMVariant::createFromInt(4));
		h = com_Items.AddItem("last");
		com_Items.CellHAlignment(h,COMVariant::createFromInt(0),2/*RightAlignment*/);
		com_Items.SortableItem(h,false);
		com_Items.SortChildren(0,COMVariant::createFromInt(0),true);
	exgrid1.EndUpdate();
}
649
Can I allow sorting only the child items

public void init()
{
	COM com_Items;
	anytype var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.Columns().Add("Childs");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Root 1");
		com_Items.SortableItem(h,false);
		com_Items.InsertItem(h,,"Child 1");
		com_Items.InsertItem(h,,"Child 2");
		com_Items.ExpandItem(h,true);
		h = com_Items.AddItem("Root 2");
		com_Items.SortableItem(h,false);
		com_Items.InsertItem(h,,"Child 1");
		com_Items.InsertItem(h,,"Child 2");
		com_Items.ExpandItem(h,true);
	exgrid1.EndUpdate();
}
648
Can I specify a terminal item so it will mark the end of childs

public void init()
{
	COM com_Items;
	anytype var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.ScrollBySingleLine(true);
	exgrid1.Columns().Add("P1");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Root 1");
		com_Items.InsertItem(h,,"Child 1");
		com_Items.InsertItem(h,,"Child 2");
		com_Items.ExpandItem(h,true);
		h = com_Items.InsertItem(h,"","");
		com_Items.ItemDivider(h,0);
		com_Items.ItemDividerLineAlignment(h,1/*DividerCenter*/);
		com_Items.ItemHeight(h,2);
		com_Items.SelectableItem(h,false);
		com_Items.SortableItem(h,false);
		h = com_Items.AddItem("Root 2");
		com_Items.InsertItem(h,,"Child 1");
		com_Items.InsertItem(h,,"Child 2");
		com_Items.ExpandItem(h,true);
		h = com_Items.InsertItem(h,"","");
		com_Items.ItemDivider(h,0);
		com_Items.ItemDividerLineAlignment(h,1/*DividerCenter*/);
		com_Items.ItemHeight(h,2);
		com_Items.SelectableItem(h,false);
		com_Items.SortableItem(h,false);
	exgrid1.EndUpdate();
}
647
Is it possible to specify an item being unsortable so its position won't be changed after sorting

public void init()
{
	COM com_Items;
	anytype var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.TreeColumnIndex(-1);
	COM::createFromVariant(exgrid1.Columns().Add("Numbers")).SortType(1/*SortNumeric*/);
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.AddItem(COMVariant::createFromInt(1));
		com_Items.AddItem(COMVariant::createFromInt(2));
		com_Items.AddItem(COMVariant::createFromInt(3));
		com_Items.AddItem(COMVariant::createFromInt(4));
		h = com_Items.AddItem("top 3");
		com_Items.ItemPosition(h,3);
		com_Items.CellHAlignment(h,COMVariant::createFromInt(0),2/*RightAlignment*/);
		com_Items.SortableItem(h,false);
		com_Items.SortChildren(0,COMVariant::createFromInt(0),false);
	exgrid1.EndUpdate();
}
646
Is it possible to move an item from a parent to another

public void init()
{
	COM com_Items;
	anytype var_Items;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.LinesAtRoot(-1/*exLinesAtRoot*/);
	exgrid1.Columns().Add("Items");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.AddItem("A");
		com_Items.AddItem("B");
		com_Items.InsertItem(com_Items.AddItem("C"),"","D");
		com_Items.SetParent(com_Items.FindItem("D",COMVariant::createFromInt(0)),com_Items.FindItem("A",COMVariant::createFromInt(0)));
	exgrid1.EndUpdate();
}
645
How can I change the identation for an item

public void init()
{
	COM com_Items;
	anytype var_Items;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.LinesAtRoot(-1/*exLinesAtRoot*/);
	exgrid1.Columns().Add("Items");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.AddItem("A");
		com_Items.AddItem("B");
		com_Items.InsertItem(com_Items.AddItem("C"),"","D");
		com_Items.SetParent(com_Items.FindItem("D",COMVariant::createFromInt(0)),0);
	exgrid1.EndUpdate();
}
644
How can I arrange the control's header on multiple levels

public void init()
{
	COM com_Column,com_Column1,com_Columns,com_Items;
	anytype var_Column,var_Column1,var_Columns,var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.DefaultItemHeight(48);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		COM::createFromVariant(com_Columns.Add("Title")).Visible(false);
		COM::createFromVariant(com_Columns.Add("FirstName")).Visible(false);
		COM::createFromVariant(com_Columns.Add("LastName")).Visible(false);
		COM::createFromVariant(com_Columns.Add("Photo")).Visible(false);
		var_Column = COM::createFromVariant(com_Columns.Add("Address")); com_Column = var_Column;
			com_Column.Visible(false);
			com_Column.Def(16/*exCellSingleLine*/,COMVariant::createFromBoolean(false));
		var_Column1 = COM::createFromVariant(com_Columns.Add("Personal Info")); com_Column1 = var_Column1;
			com_Column1.FormatLevel("3:48,(0/1/2),4:96");
			com_Column1.Def(32/*exCellFormatLevel*/,"3:48,(0/1/2),4:96");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Sales Representative");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"Nancy");
		com_Items.CellValue(h,COMVariant::createFromInt(2),"Davolio");
		com_Items.CellPicture(h,COMVariant::createFromInt(3),COM::createFromVariant(exgrid1.ExecuteTemplate("loadpicture(`c:\\exontrol\\images\\zipdisk.gif`)")));
		com_Items.CellValue(h,COMVariant::createFromInt(4),"507-20th Ave. E.Apt.  2A");
	exgrid1.EndUpdate();
}
643
How can I filter programatically using more columns

public void init()
{
	COM com_Column,com_Column1,com_Columns,com_Items;
	anytype var_Column,var_Column1,var_Columns,var_Items;
	;

	super();

	exgrid1.BeginUpdate();
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		com_Columns.Add("Car");
		com_Columns.Add("Equipment");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.CellValue(com_Items.AddItem("Mazda"),COMVariant::createFromInt(1),"Air Bag");
		com_Items.CellValue(com_Items.AddItem("Toyota"),COMVariant::createFromInt(1),"Air Bag,Air condition");
		com_Items.CellValue(com_Items.AddItem("Ford"),COMVariant::createFromInt(1),"Air condition");
		com_Items.CellValue(com_Items.AddItem("Nissan"),COMVariant::createFromInt(1),"Air Bag,ABS,ESP");
		com_Items.CellValue(com_Items.AddItem("Mazda"),COMVariant::createFromInt(1),"Air Bag, ABS,ESP");
		com_Items.CellValue(com_Items.AddItem("Mazda"),COMVariant::createFromInt(1),"ABS,ESP");
	var_Column = COM::createFromObject(exgrid1.Columns()).Item("Car"); com_Column = var_Column;
		com_Column.FilterType(240/*exFilter*/);
		com_Column.Filter("Mazda");
	var_Column1 = COM::createFromObject(exgrid1.Columns()).Item("Equipment"); com_Column1 = var_Column1;
		com_Column1.FilterType(3/*exPattern*/);
		com_Column1.Filter("*ABS*|*ESP*");
	exgrid1.ApplyFilter();
	exgrid1.EndUpdate();
}
642
How can I show the ticks for a single slider field

public void init()
{
	COM com_Editor,com_Items;
	anytype var_Editor,var_Items;
	;

	super();

	exgrid1.BeginUpdate();
	var_Editor = COM::createFromObject(COM::createFromVariant(exgrid1.Columns().Add("Slider"))).Editor(); com_Editor = var_Editor;
	com_Editor.EditType(20/*SliderType*/);
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.AddItem(COMVariant::createFromInt(10));
		var_Editor = com_Items.CellEditor(com_Items.AddItem(COMVariant::createFromInt(20)),COMVariant::createFromInt(0)); com_Editor = var_Editor;
			com_Editor.EditType(20/*SliderType*/);
			com_Editor.Option(53/*exSliderTickFrequency*/,COMVariant::createFromInt(10));
		com_Items.AddItem(COMVariant::createFromInt(30));
	exgrid1.EndUpdate();
}
641
Is it possible to show ticks for slider fields

public void init()
{
	COM com_Editor;
	anytype var_Editor;
	;

	super();

	var_Editor = COM::createFromVariant(exgrid1.Columns().Add("Slider")).Editor(); com_Editor = var_Editor;
		com_Editor.EditType(20/*SliderType*/);
		com_Editor.Option(53/*exSliderTickFrequency*/,COMVariant::createFromInt(10));
	exgrid1.Items().AddItem(COMVariant::createFromInt(10));
}
640
Is it possible to colour a particular column, I mean the cell's foreground color

public void init()
{
	COM com_Columns,com_ConditionalFormat,com_Items;
	anytype var_Columns,var_ConditionalFormat,var_Items;
	;

	super();

	exgrid1.BeginUpdate();
	var_ConditionalFormat = COM::createFromObject(exgrid1.ConditionalFormats()).Add("1"); com_ConditionalFormat = var_ConditionalFormat;
		com_ConditionalFormat.ForeColor(WinApi::RGB2int(255,0,0));
		com_ConditionalFormat.ApplyTo(1);
	exgrid1.MarkSearchColumn(false);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		com_Columns.Add("Column 1");
		com_Columns.Add("Column 2");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.CellValue(com_Items.AddItem(COMVariant::createFromInt(0)),COMVariant::createFromInt(1),COMVariant::createFromInt(1));
		com_Items.CellValue(com_Items.AddItem(COMVariant::createFromInt(2)),COMVariant::createFromInt(1),COMVariant::createFromInt(3));
		com_Items.CellValue(com_Items.AddItem(COMVariant::createFromInt(4)),COMVariant::createFromInt(1),COMVariant::createFromInt(5));
	exgrid1.EndUpdate();
}
639
Is it possible to colour a particular column for specified values

public void init()
{
	COM com_Columns,com_ConditionalFormat,com_Items;
	anytype var_Columns,var_ConditionalFormat,var_Items;
	;

	super();

	exgrid1.BeginUpdate();
	var_ConditionalFormat = COM::createFromObject(exgrid1.ConditionalFormats()).Add("int(%1) in (3,4,5)"); com_ConditionalFormat = var_ConditionalFormat;
		com_ConditionalFormat.BackColor(WinApi::RGB2int(255,0,0));
		com_ConditionalFormat.ApplyTo(1);
	exgrid1.MarkSearchColumn(false);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		com_Columns.Add("Column 1");
		com_Columns.Add("Column 2");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.CellValue(com_Items.AddItem(COMVariant::createFromInt(0)),COMVariant::createFromInt(1),COMVariant::createFromInt(1));
		com_Items.CellValue(com_Items.AddItem(COMVariant::createFromInt(2)),COMVariant::createFromInt(1),COMVariant::createFromInt(3));
		com_Items.CellValue(com_Items.AddItem(COMVariant::createFromInt(4)),COMVariant::createFromInt(1),COMVariant::createFromInt(5));
	exgrid1.EndUpdate();
}
638
Is it possible to colour a particular column

public void init()
{
	COM com_Columns,com_Items;
	anytype var_Columns,var_Items;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.MarkSearchColumn(false);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		com_Columns.Add("Column 1");
		COM::createFromVariant(com_Columns.Add("Column 2")).Def(4/*exCellBackColor*/,COMVariant::createFromInt(255));
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.CellValue(com_Items.AddItem(COMVariant::createFromInt(0)),COMVariant::createFromInt(1),COMVariant::createFromInt(1));
		com_Items.CellValue(com_Items.AddItem(COMVariant::createFromInt(2)),COMVariant::createFromInt(1),COMVariant::createFromInt(3));
		com_Items.CellValue(com_Items.AddItem(COMVariant::createFromInt(4)),COMVariant::createFromInt(1),COMVariant::createFromInt(5));
	exgrid1.EndUpdate();
}
637
How do i get all the children items that are under a certain parent Item handle
public void init()
{
	COM com_Items,com_Items1;
	anytype var_Items,var_Items1;
	int h,hChild;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.LinesAtRoot(-1/*exLinesAtRoot*/);
	exgrid1.Columns().Add("P");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Root");
		com_Items.InsertItem(h,,"Child 1");
		com_Items.InsertItem(h,,"Child 2");
		com_Items.ExpandItem(h,true);
	var_Items1 = exgrid1.Items(); com_Items1 = var_Items1;
		hChild = com_Items1.ItemChild(com_Items1.FirstVisibleItem());
		print( com_Items1.CellValue(hChild,COMVariant::createFromInt(0)) );
		print( com_Items1.CellValue(com_Items1.NextSiblingItem(hChild),COMVariant::createFromInt(0)) );
	exgrid1.EndUpdate();
}
636
Is is possible to use HTML tags to display in the filter caption

public void init()
{
	COM com_Items;
	anytype var_Items;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.FilterBarPromptVisible(1/*exFilterBarPromptVisible*/);
	exgrid1.FilterBarCaption("This is a bit of text being displayed in the filter bar.");
	exgrid1.Columns().Add("");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.AddItem("Item 1");
		com_Items.AddItem("Item 2");
		com_Items.AddItem("Item 3");
	exgrid1.EndUpdate();
}
635
How can I find the number of items after filtering
public void init()
{
	COM com_Items;
	anytype var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.Columns().Add("");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("");
		com_Items.CellValue(h,COMVariant::createFromInt(0),com_Items.VisibleItemCount());
	exgrid1.EndUpdate();
}
634
How can I change the filter caption

public void init()
{
	COM com_Columns,com_Items;
	anytype var_Columns,var_Items;
	int h0;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.ColumnAutoResize(true);
	exgrid1.ContinueColumnScroll(0);
	exgrid1.FocusColumnIndex(1);
	exgrid1.MarkSearchColumn(false);
	exgrid1.SearchColumnIndex(1);
	exgrid1.FilterBarPromptVisible(1/*exFilterBarPromptVisible*/);
	exgrid1.FilterBarPromptType(12801/*exFilterPromptWords | exFilterPromptContainsAll*/);
	exgrid1.FilterBarPromptPattern("london robert");
	exgrid1.FilterBarCaption("<r>Found: ... ");
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		COM::createFromVariant(com_Columns.Add("Name")).Width(96);
		COM::createFromVariant(com_Columns.Add("Title")).Width(96);
		com_Columns.Add("City");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h0 = com_Items.AddItem("Nancy Davolio");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Seattle");
		h0 = com_Items.AddItem("Andrew Fuller");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Vice President, Sales");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Tacoma");
		com_Items.SelectItem(h0,true);
		h0 = com_Items.AddItem("Janet Leverling");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Kirkland");
		h0 = com_Items.AddItem("Margaret Peacock");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Redmond");
		h0 = com_Items.AddItem("Steven Buchanan");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Manager");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Michael Suyama");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Robert King");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Laura Callahan");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Inside Sales Coordinator");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Seattle");
		h0 = com_Items.AddItem("Anne Dodsworth");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
	exgrid1.EndUpdate();
}
633
While using the filter prompt is it is possible to use wild characters

public void init()
{
	COM com_Columns,com_Items;
	anytype var_Columns,var_Items;
	int h0;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.ColumnAutoResize(true);
	exgrid1.ContinueColumnScroll(0);
	exgrid1.FocusColumnIndex(1);
	exgrid1.MarkSearchColumn(false);
	exgrid1.SearchColumnIndex(1);
	exgrid1.FilterBarPromptVisible(1/*exFilterBarPromptVisible*/);
	exgrid1.FilterBarPromptType(16/*exFilterPromptPattern*/);
	exgrid1.FilterBarPromptPattern("lon* seat*");
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		COM::createFromVariant(com_Columns.Add("Name")).Width(96);
		COM::createFromVariant(com_Columns.Add("Title")).Width(96);
		com_Columns.Add("City");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h0 = com_Items.AddItem("Nancy Davolio");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Seattle");
		h0 = com_Items.AddItem("Andrew Fuller");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Vice President, Sales");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Tacoma");
		com_Items.SelectItem(h0,true);
		h0 = com_Items.AddItem("Janet Leverling");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Kirkland");
		h0 = com_Items.AddItem("Margaret Peacock");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Redmond");
		h0 = com_Items.AddItem("Steven Buchanan");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Manager");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Michael Suyama");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Robert King");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Laura Callahan");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Inside Sales Coordinator");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Seattle");
		h0 = com_Items.AddItem("Anne Dodsworth");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
	exgrid1.EndUpdate();
}
632
How can I list all items that contains any of specified words, not necessary at the beggining

public void init()
{
	COM com_Columns,com_Items;
	anytype var_Columns,var_Items;
	int h0;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.ColumnAutoResize(true);
	exgrid1.ContinueColumnScroll(0);
	exgrid1.FocusColumnIndex(1);
	exgrid1.MarkSearchColumn(false);
	exgrid1.SearchColumnIndex(1);
	exgrid1.FilterBarPromptVisible(1/*exFilterBarPromptVisible*/);
	exgrid1.FilterBarPromptType(4610/*exFilterPromptStartWords | exFilterPromptContainsAny*/);
	exgrid1.FilterBarPromptPattern("london davolio");
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		COM::createFromVariant(com_Columns.Add("Name")).Width(96);
		COM::createFromVariant(com_Columns.Add("Title")).Width(96);
		com_Columns.Add("City");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h0 = com_Items.AddItem("Nancy Davolio");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Seattle");
		h0 = com_Items.AddItem("Andrew Fuller");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Vice President, Sales");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Tacoma");
		com_Items.SelectItem(h0,true);
		h0 = com_Items.AddItem("Janet Leverling");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Kirkland");
		h0 = com_Items.AddItem("Margaret Peacock");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Redmond");
		h0 = com_Items.AddItem("Steven Buchanan");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Manager");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Michael Suyama");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Robert King");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Laura Callahan");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Inside Sales Coordinator");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Seattle");
		h0 = com_Items.AddItem("Anne Dodsworth");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
	exgrid1.EndUpdate();
}
631
How can I list all items that contains any of specified words, not strings

public void init()
{
	COM com_Columns,com_Items;
	anytype var_Columns,var_Items;
	int h0;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.ColumnAutoResize(true);
	exgrid1.ContinueColumnScroll(0);
	exgrid1.FocusColumnIndex(1);
	exgrid1.MarkSearchColumn(false);
	exgrid1.SearchColumnIndex(1);
	exgrid1.FilterBarPromptVisible(1/*exFilterBarPromptVisible*/);
	exgrid1.FilterBarPromptType(12802/*exFilterPromptWords | exFilterPromptContainsAny*/);
	exgrid1.FilterBarPromptPattern("london nancy");
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		COM::createFromVariant(com_Columns.Add("Name")).Width(96);
		COM::createFromVariant(com_Columns.Add("Title")).Width(96);
		com_Columns.Add("City");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h0 = com_Items.AddItem("Nancy Davolio");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Seattle");
		h0 = com_Items.AddItem("Andrew Fuller");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Vice President, Sales");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Tacoma");
		com_Items.SelectItem(h0,true);
		h0 = com_Items.AddItem("Janet Leverling");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Kirkland");
		h0 = com_Items.AddItem("Margaret Peacock");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Redmond");
		h0 = com_Items.AddItem("Steven Buchanan");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Manager");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Michael Suyama");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Robert King");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Laura Callahan");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Inside Sales Coordinator");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Seattle");
		h0 = com_Items.AddItem("Anne Dodsworth");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
	exgrid1.EndUpdate();
}
630
How can I list all items that contains all specified words, not strings

public void init()
{
	COM com_Columns,com_Items;
	anytype var_Columns,var_Items;
	int h0;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.ColumnAutoResize(true);
	exgrid1.ContinueColumnScroll(0);
	exgrid1.FocusColumnIndex(1);
	exgrid1.MarkSearchColumn(false);
	exgrid1.SearchColumnIndex(1);
	exgrid1.FilterBarPromptVisible(1/*exFilterBarPromptVisible*/);
	exgrid1.FilterBarPromptType(12801/*exFilterPromptWords | exFilterPromptContainsAll*/);
	exgrid1.FilterBarPromptPattern("london robert");
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		COM::createFromVariant(com_Columns.Add("Name")).Width(96);
		COM::createFromVariant(com_Columns.Add("Title")).Width(96);
		com_Columns.Add("City");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h0 = com_Items.AddItem("Nancy Davolio");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Seattle");
		h0 = com_Items.AddItem("Andrew Fuller");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Vice President, Sales");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Tacoma");
		com_Items.SelectItem(h0,true);
		h0 = com_Items.AddItem("Janet Leverling");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Kirkland");
		h0 = com_Items.AddItem("Margaret Peacock");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Redmond");
		h0 = com_Items.AddItem("Steven Buchanan");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Manager");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Michael Suyama");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Robert King");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Laura Callahan");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Inside Sales Coordinator");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Seattle");
		h0 = com_Items.AddItem("Anne Dodsworth");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
	exgrid1.EndUpdate();
}
629
I've noticed that the filtering by prompt is not case sensitive, is is possible to make it case sensitive

public void init()
{
	COM com_Columns,com_Items;
	anytype var_Columns,var_Items;
	int h0;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.ColumnAutoResize(true);
	exgrid1.ContinueColumnScroll(0);
	exgrid1.FocusColumnIndex(1);
	exgrid1.MarkSearchColumn(false);
	exgrid1.SearchColumnIndex(1);
	exgrid1.FilterBarPromptVisible(1/*exFilterBarPromptVisible*/);
	exgrid1.FilterBarPromptType(258/*exFilterPromptCaseSensitive | exFilterPromptContainsAny*/);
	exgrid1.FilterBarPromptPattern("Anne");
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		COM::createFromVariant(com_Columns.Add("Name")).Width(96);
		COM::createFromVariant(com_Columns.Add("Title")).Width(96);
		com_Columns.Add("City");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h0 = com_Items.AddItem("Nancy Davolio");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Seattle");
		h0 = com_Items.AddItem("Andrew Fuller");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Vice President, Sales");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Tacoma");
		com_Items.SelectItem(h0,true);
		h0 = com_Items.AddItem("Janet Leverling");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Kirkland");
		h0 = com_Items.AddItem("Margaret Peacock");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Redmond");
		h0 = com_Items.AddItem("Steven Buchanan");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Manager");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Michael Suyama");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Robert King");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Laura Callahan");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Inside Sales Coordinator");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Seattle");
		h0 = com_Items.AddItem("Anne Dodsworth");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
	exgrid1.EndUpdate();
}
628
Is it possible to list only items that ends with any of specified strings

public void init()
{
	COM com_Columns,com_Items;
	anytype var_Columns,var_Items;
	int h0;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.ColumnAutoResize(true);
	exgrid1.ContinueColumnScroll(0);
	exgrid1.FocusColumnIndex(1);
	exgrid1.MarkSearchColumn(false);
	exgrid1.SearchColumnIndex(1);
	exgrid1.FilterBarPromptVisible(1/*exFilterBarPromptVisible*/);
	exgrid1.FilterBarPromptType(4/*exFilterPromptEndWith*/);
	exgrid1.FilterBarPromptColumns("0");
	exgrid1.FilterBarPromptPattern("Fuller");
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		COM::createFromVariant(com_Columns.Add("Name")).Width(96);
		COM::createFromVariant(com_Columns.Add("Title")).Width(96);
		com_Columns.Add("City");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h0 = com_Items.AddItem("Nancy Davolio");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Seattle");
		h0 = com_Items.AddItem("Andrew Fuller");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Vice President, Sales");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Tacoma");
		com_Items.SelectItem(h0,true);
		h0 = com_Items.AddItem("Janet Leverling");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Kirkland");
		h0 = com_Items.AddItem("Margaret Peacock");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Redmond");
		h0 = com_Items.AddItem("Steven Buchanan");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Manager");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Michael Suyama");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Robert King");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Laura Callahan");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Inside Sales Coordinator");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Seattle");
		h0 = com_Items.AddItem("Anne Dodsworth");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
	exgrid1.EndUpdate();
}
627
Is it possible to list only items that ends with any of specified strings

public void init()
{
	COM com_Columns,com_Items;
	anytype var_Columns,var_Items;
	int h0;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.ColumnAutoResize(true);
	exgrid1.ContinueColumnScroll(0);
	exgrid1.FocusColumnIndex(1);
	exgrid1.MarkSearchColumn(false);
	exgrid1.SearchColumnIndex(1);
	exgrid1.FilterBarPromptVisible(1/*exFilterBarPromptVisible*/);
	exgrid1.FilterBarPromptType(4/*exFilterPromptEndWith*/);
	exgrid1.FilterBarPromptColumns("0");
	exgrid1.FilterBarPromptPattern("Fuller");
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		COM::createFromVariant(com_Columns.Add("Name")).Width(96);
		COM::createFromVariant(com_Columns.Add("Title")).Width(96);
		com_Columns.Add("City");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h0 = com_Items.AddItem("Nancy Davolio");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Seattle");
		h0 = com_Items.AddItem("Andrew Fuller");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Vice President, Sales");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Tacoma");
		com_Items.SelectItem(h0,true);
		h0 = com_Items.AddItem("Janet Leverling");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Kirkland");
		h0 = com_Items.AddItem("Margaret Peacock");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Redmond");
		h0 = com_Items.AddItem("Steven Buchanan");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Manager");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Michael Suyama");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Robert King");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Laura Callahan");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Inside Sales Coordinator");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Seattle");
		h0 = com_Items.AddItem("Anne Dodsworth");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
	exgrid1.EndUpdate();
}
626
Is it possible to list only items that starts with any of specified strings

public void init()
{
	COM com_Columns,com_Items;
	anytype var_Columns,var_Items;
	int h0;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.ColumnAutoResize(true);
	exgrid1.ContinueColumnScroll(0);
	exgrid1.FocusColumnIndex(1);
	exgrid1.MarkSearchColumn(false);
	exgrid1.SearchColumnIndex(1);
	exgrid1.FilterBarPromptVisible(1/*exFilterBarPromptVisible*/);
	exgrid1.FilterBarPromptType(3/*exFilterPromptStartWith*/);
	exgrid1.FilterBarPromptColumns("0");
	exgrid1.FilterBarPromptPattern("An M");
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		COM::createFromVariant(com_Columns.Add("Name")).Width(96);
		COM::createFromVariant(com_Columns.Add("Title")).Width(96);
		com_Columns.Add("City");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h0 = com_Items.AddItem("Nancy Davolio");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Seattle");
		h0 = com_Items.AddItem("Andrew Fuller");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Vice President, Sales");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Tacoma");
		com_Items.SelectItem(h0,true);
		h0 = com_Items.AddItem("Janet Leverling");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Kirkland");
		h0 = com_Items.AddItem("Margaret Peacock");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Redmond");
		h0 = com_Items.AddItem("Steven Buchanan");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Manager");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Michael Suyama");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Robert King");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Laura Callahan");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Inside Sales Coordinator");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Seattle");
		h0 = com_Items.AddItem("Anne Dodsworth");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
	exgrid1.EndUpdate();
}
625
Is it possible to list only items that starts with specified string

public void init()
{
	COM com_Columns,com_Items;
	anytype var_Columns,var_Items;
	int h0;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.ColumnAutoResize(true);
	exgrid1.ContinueColumnScroll(0);
	exgrid1.FocusColumnIndex(1);
	exgrid1.MarkSearchColumn(false);
	exgrid1.SearchColumnIndex(1);
	exgrid1.FilterBarPromptVisible(1/*exFilterBarPromptVisible*/);
	exgrid1.FilterBarPromptType(3/*exFilterPromptStartWith*/);
	exgrid1.FilterBarPromptColumns("0");
	exgrid1.FilterBarPromptPattern("A");
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		COM::createFromVariant(com_Columns.Add("Name")).Width(96);
		COM::createFromVariant(com_Columns.Add("Title")).Width(96);
		com_Columns.Add("City");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h0 = com_Items.AddItem("Nancy Davolio");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Seattle");
		h0 = com_Items.AddItem("Andrew Fuller");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Vice President, Sales");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Tacoma");
		com_Items.SelectItem(h0,true);
		h0 = com_Items.AddItem("Janet Leverling");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Kirkland");
		h0 = com_Items.AddItem("Margaret Peacock");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Redmond");
		h0 = com_Items.AddItem("Steven Buchanan");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Manager");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Michael Suyama");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Robert King");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Laura Callahan");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Inside Sales Coordinator");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Seattle");
		h0 = com_Items.AddItem("Anne Dodsworth");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
	exgrid1.EndUpdate();
}
624
How can I specify that the list should include any of the seqeunces in the pattern

public void init()
{
	COM com_Columns,com_Items;
	anytype var_Columns,var_Items;
	int h0;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.ColumnAutoResize(true);
	exgrid1.ContinueColumnScroll(0);
	exgrid1.FocusColumnIndex(1);
	exgrid1.MarkSearchColumn(false);
	exgrid1.SearchColumnIndex(1);
	exgrid1.FilterBarPromptVisible(1/*exFilterBarPromptVisible*/);
	exgrid1.FilterBarPromptType(2/*exFilterPromptContainsAny*/);
	exgrid1.FilterBarPromptPattern("london seattle");
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		COM::createFromVariant(com_Columns.Add("Name")).Width(96);
		COM::createFromVariant(com_Columns.Add("Title")).Width(96);
		com_Columns.Add("City");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h0 = com_Items.AddItem("Nancy Davolio");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Seattle");
		h0 = com_Items.AddItem("Andrew Fuller");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Vice President, Sales");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Tacoma");
		com_Items.SelectItem(h0,true);
		h0 = com_Items.AddItem("Janet Leverling");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Kirkland");
		h0 = com_Items.AddItem("Margaret Peacock");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Redmond");
		h0 = com_Items.AddItem("Steven Buchanan");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Manager");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Michael Suyama");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Robert King");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Laura Callahan");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Inside Sales Coordinator");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Seattle");
		h0 = com_Items.AddItem("Anne Dodsworth");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
	exgrid1.EndUpdate();
}
623
How can I specify that all sequences in the filter pattern must be included in the list

public void init()
{
	COM com_Columns,com_Items;
	anytype var_Columns,var_Items;
	int h0;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.ColumnAutoResize(true);
	exgrid1.ContinueColumnScroll(0);
	exgrid1.FocusColumnIndex(1);
	exgrid1.MarkSearchColumn(false);
	exgrid1.SearchColumnIndex(1);
	exgrid1.FilterBarPromptVisible(1/*exFilterBarPromptVisible*/);
	exgrid1.FilterBarPromptType(1/*exFilterPromptContainsAll*/);
	exgrid1.FilterBarPromptPattern("london manager");
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		COM::createFromVariant(com_Columns.Add("Name")).Width(96);
		COM::createFromVariant(com_Columns.Add("Title")).Width(96);
		com_Columns.Add("City");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h0 = com_Items.AddItem("Nancy Davolio");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Seattle");
		h0 = com_Items.AddItem("Andrew Fuller");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Vice President, Sales");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Tacoma");
		com_Items.SelectItem(h0,true);
		h0 = com_Items.AddItem("Janet Leverling");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Kirkland");
		h0 = com_Items.AddItem("Margaret Peacock");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Redmond");
		h0 = com_Items.AddItem("Steven Buchanan");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Manager");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Michael Suyama");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Robert King");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Laura Callahan");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Inside Sales Coordinator");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Seattle");
		h0 = com_Items.AddItem("Anne Dodsworth");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
	exgrid1.EndUpdate();
}
622
How do I change at runtime the filter prompt

public void init()
{
	COM com_Columns,com_Items;
	anytype var_Columns,var_Items;
	int h0;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.ColumnAutoResize(true);
	exgrid1.ContinueColumnScroll(0);
	exgrid1.FocusColumnIndex(1);
	exgrid1.MarkSearchColumn(false);
	exgrid1.SearchColumnIndex(1);
	exgrid1.FilterBarPromptVisible(1/*exFilterBarPromptVisible*/);
	exgrid1.FilterBarPromptPattern("london manager");
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		COM::createFromVariant(com_Columns.Add("Name")).Width(96);
		COM::createFromVariant(com_Columns.Add("Title")).Width(96);
		com_Columns.Add("City");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h0 = com_Items.AddItem("Nancy Davolio");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Seattle");
		h0 = com_Items.AddItem("Andrew Fuller");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Vice President, Sales");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Tacoma");
		com_Items.SelectItem(h0,true);
		h0 = com_Items.AddItem("Janet Leverling");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Kirkland");
		h0 = com_Items.AddItem("Margaret Peacock");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Redmond");
		h0 = com_Items.AddItem("Steven Buchanan");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Manager");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Michael Suyama");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Robert King");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Laura Callahan");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Inside Sales Coordinator");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Seattle");
		h0 = com_Items.AddItem("Anne Dodsworth");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
	exgrid1.EndUpdate();
}
621
How do I specify to filter only a single column when using the filter prompt

public void init()
{
	COM com_Columns,com_Items;
	anytype var_Columns,var_Items;
	int h0;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.ColumnAutoResize(true);
	exgrid1.ContinueColumnScroll(0);
	exgrid1.FocusColumnIndex(1);
	exgrid1.MarkSearchColumn(false);
	exgrid1.SearchColumnIndex(1);
	exgrid1.FilterBarPromptVisible(1/*exFilterBarPromptVisible*/);
	exgrid1.FilterBarPromptColumns("2,3");
	exgrid1.FilterBarPromptPattern("london");
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		COM::createFromVariant(com_Columns.Add("Name")).Width(96);
		COM::createFromVariant(com_Columns.Add("Title")).Width(96);
		com_Columns.Add("City");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h0 = com_Items.AddItem("Nancy Davolio");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Seattle");
		h0 = com_Items.AddItem("Andrew Fuller");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Vice President, Sales");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Tacoma");
		com_Items.SelectItem(h0,true);
		h0 = com_Items.AddItem("Janet Leverling");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Kirkland");
		h0 = com_Items.AddItem("Margaret Peacock");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Redmond");
		h0 = com_Items.AddItem("Steven Buchanan");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Manager");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Michael Suyama");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Robert King");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Laura Callahan");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Inside Sales Coordinator");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Seattle");
		h0 = com_Items.AddItem("Anne Dodsworth");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
	exgrid1.EndUpdate();
}
620
How do I change the prompt or the caption being displayed in the filter bar

public void init()
{
	COM com_Columns;
	anytype var_Columns;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.ColumnAutoResize(true);
	exgrid1.ContinueColumnScroll(0);
	exgrid1.FocusColumnIndex(1);
	exgrid1.MarkSearchColumn(false);
	exgrid1.SearchColumnIndex(1);
	exgrid1.FilterBarPromptVisible(1/*exFilterBarPromptVisible*/);
	exgrid1.FilterBarPrompt("changed");
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		COM::createFromVariant(com_Columns.Add("Name")).Width(96);
		COM::createFromVariant(com_Columns.Add("Title")).Width(96);
		com_Columns.Add("City");
	exgrid1.EndUpdate();
}
619
How do I enable the filter prompt feature

public void init()
{
	COM com_Columns,com_Items;
	anytype var_Columns,var_Items;
	int h0;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.ColumnAutoResize(true);
	exgrid1.ContinueColumnScroll(0);
	exgrid1.FocusColumnIndex(1);
	exgrid1.MarkSearchColumn(false);
	exgrid1.SearchColumnIndex(1);
	exgrid1.FilterBarPromptVisible(1/*exFilterBarPromptVisible*/);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		COM::createFromVariant(com_Columns.Add("Name")).Width(96);
		COM::createFromVariant(com_Columns.Add("Title")).Width(96);
		com_Columns.Add("City");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h0 = com_Items.AddItem("Nancy Davolio");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Seattle");
		h0 = com_Items.AddItem("Andrew Fuller");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Vice President, Sales");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Tacoma");
		com_Items.SelectItem(h0,true);
		h0 = com_Items.AddItem("Janet Leverling");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Kirkland");
		h0 = com_Items.AddItem("Margaret Peacock");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Redmond");
		h0 = com_Items.AddItem("Steven Buchanan");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Manager");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Michael Suyama");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Robert King");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Laura Callahan");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Inside Sales Coordinator");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Seattle");
		h0 = com_Items.AddItem("Anne Dodsworth");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
	exgrid1.EndUpdate();
}
618
How can I control the colors that can be applied to an EBN part

// Change event - Occurs when the user changes the cell's content.
void onEvent_Change(int   _Item,int   _ColIndex,COMVariant /*variant*/   _NewValue)
{
	COM com_Items;
	anytype var_Items;
	;
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.ItemBackColor(com_Items.FirstVisibleItem(),_NewValue);
}

public void init()
{
	COM com_Appearance,com_Column,com_Column1,com_Columns,com_Editor,com_Items;
	anytype var_Appearance,var_Column,var_Column1,var_Columns,var_Editor,var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	var_Appearance = exgrid1.VisualAppearance(); com_Appearance = var_Appearance;
		com_Appearance.Add(2,"c:\\exontrol\\images\\normal.ebn");
		com_Appearance.Add(1,"CP:2 10 3 -10 -5");
	exgrid1.SelBackColor(exgrid1.BackColor());
	exgrid1.SelForeColor(exgrid1.ForeColor());
	exgrid1.ScrollBySingleLine(true);
	exgrid1.TreeColumnIndex(-1);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		var_Column = COM::createFromVariant(com_Columns.Add("Test")); com_Column = var_Column;
			com_Column.Width(32);
		var_Column1 = COM::createFromVariant(com_Columns.Add("RGB")); com_Column1 = var_Column1;
			var_Editor = com_Column1.Editor(); com_Editor = var_Editor;
				com_Editor.EditType(20/*SliderType*/);
				com_Editor.Option(44/*exSliderMax*/,COMVariant::createFromInt(255));
				com_Editor.Option(41/*exSliderWidth*/,COMVariant::createFromInt(-60));
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("");
		com_Items.CellHAlignment(h,COMVariant::createFromInt(0),1/*CenterAlignment*/);
		com_Items.ItemDivider(h,0);
		com_Items.ItemBackColor(h,0x1000000);
		com_Items.ItemHeight(h,36);
		com_Items.SelectableItem(h,false);
		h = com_Items.InsertItem(0,COMVariant::createFromInt(1),"Red");
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(255));
		h = com_Items.InsertItem(0,COMVariant::createFromInt(255),"Green");
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(255));
		h = com_Items.InsertItem(0,COMVariant::createFromInt(65536),"Blue");
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(255));
	exgrid1.EndUpdate();
}
617
I know this is fairly basic, but could you send me a sample that places a tree in the first column

public void init()
{
	COM com_Items;
	anytype var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.LinesAtRoot(-1/*exLinesAtRoot*/);
	exgrid1.Columns().Add("heading");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Parent 1");
		com_Items.InsertItem(h,,"Child A");
		com_Items.InsertItem(com_Items.InsertItem(h,,"Child B"),,"GrandChild C");
		com_Items.ExpandItem(h,true);
		h = com_Items.AddItem("Parent 2");
		com_Items.InsertItem(h,,"Child D");
		com_Items.InsertItem(h,,"Child E");
		com_Items.ExpandItem(h,true);
	exgrid1.EndUpdate();
}
616
How can I get the caption of focused item
// SelectionChanged event - Fired after a new item has been selected.
void onEvent_SelectionChanged()
{
	COM com_Items;
	anytype var_Items;
	;
	var_Items = exgrid1.Items(); com_Items = var_Items;
		print( "Handle" );
		print( com_Items.FocusItem() );
		print( "Caption" );
		print( com_Items.CellCaption(com_Items.FocusItem(),COMVariant::createFromInt(0)) );
}

public void init()
{
	COM com_Items;
	anytype var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.LinesAtRoot(-1/*exLinesAtRoot*/);
	exgrid1.Columns().Add("Items");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("R1");
		com_Items.InsertItem(h,,"Cell 1.1");
		com_Items.InsertItem(h,,"Cell 1.2");
		com_Items.ExpandItem(h,true);
		h = com_Items.AddItem("R2");
		com_Items.InsertItem(h,,"Cell 2.1");
		com_Items.InsertItem(h,,"Cell 2.2");
		com_Items.ExpandItem(h,true);
	exgrid1.EndUpdate();
}
615
How can I get the caption of selected item
// SelectionChanged event - Fired after a new item has been selected.
void onEvent_SelectionChanged()
{
	COM com_Items;
	anytype var_Items;
	;
	var_Items = exgrid1.Items(); com_Items = var_Items;
		print( "Handle" );
		print( com_Items.SelectedItem(0) );
		print( "Caption" );
		print( com_Items.CellCaption(com_Items.SelectedItem(0),COMVariant::createFromInt(0)) );
}

public void init()
{
	COM com_Items;
	anytype var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.LinesAtRoot(-1/*exLinesAtRoot*/);
	exgrid1.Columns().Add("Items");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("R1");
		com_Items.InsertItem(h,,"Cell 1.1");
		com_Items.InsertItem(h,,"Cell 1.2");
		com_Items.ExpandItem(h,true);
		h = com_Items.AddItem("R2");
		com_Items.InsertItem(h,,"Cell 2.1");
		com_Items.InsertItem(h,,"Cell 2.2");
		com_Items.ExpandItem(h,true);
	exgrid1.EndUpdate();
}
614
Is it possible to let users selects cells as in Excel

public void init()
{
	COM com_Column,com_Column1,com_Column2,com_Columns,com_Items;
	anytype var_Column,var_Column1,var_Column2,var_Columns,var_Items;
	int h,h1;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.FullRowSelect(1/*exRectSel*/);
	exgrid1.SingleSel(false);
	exgrid1.ReadOnly(-1/*exReadOnly*/);
	exgrid1.MarkSearchColumn(false);
	exgrid1.ShowFocusRect(false);
	exgrid1.LinesAtRoot(-1/*exLinesAtRoot*/);
	exgrid1.SelForeColor(WinApi::RGB2int(0,0,0));
	exgrid1.SelBackColor(WinApi::RGB2int(200,225,242));
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		com_Columns.Add("A");
		var_Column = COM::createFromVariant(com_Columns.Add("B")); com_Column = var_Column;
			com_Column.AllowSizing(false);
			com_Column.Width(24);
		var_Column1 = COM::createFromVariant(com_Columns.Add("C")); com_Column1 = var_Column1;
			com_Column1.AllowSizing(false);
			com_Column1.Width(24);
			com_Column1.Def(0/*exCellHasCheckBox*/,COMVariant::createFromInt(1));
			com_Column1.PartialCheck(true);
		var_Column2 = COM::createFromVariant(com_Columns.Add("D")); com_Column2 = var_Column2;
			com_Column2.AllowSizing(false);
			com_Column2.Width(24);
			com_Column2.Def(1/*exCellHasRadioButton*/,COMVariant::createFromInt(1));
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.InsertItem(,,"Group 1");
		h1 = com_Items.InsertItem(h,,COMVariant::createFromInt(16));
		com_Items.CellValue(h1,COMVariant::createFromInt(1),COMVariant::createFromInt(17));
		h1 = com_Items.InsertItem(h,,COMVariant::createFromInt(2));
		com_Items.CellValue(h1,COMVariant::createFromInt(1),COMVariant::createFromInt(11));
		h1 = com_Items.InsertItem(h,,COMVariant::createFromInt(2));
		com_Items.ItemBackColor(h1,WinApi::RGB2int(240,240,240));
		com_Items.CellValue(h1,COMVariant::createFromInt(1),COMVariant::createFromInt(9));
		com_Items.ExpandItem(h,true);
		h = com_Items.InsertItem(,,"Group 2");
		com_Items.CellValueFormat(h,COMVariant::createFromInt(2),1/*exHTML*/);
		h1 = com_Items.InsertItem(h,,COMVariant::createFromInt(16));
		com_Items.CellValue(h1,COMVariant::createFromInt(1),COMVariant::createFromInt(9));
		h1 = com_Items.InsertItem(h,,COMVariant::createFromInt(12));
		com_Items.CellValue(h1,COMVariant::createFromInt(1),COMVariant::createFromInt(11));
		h1 = com_Items.InsertItem(h,,COMVariant::createFromInt(2));
		com_Items.CellValue(h1,COMVariant::createFromInt(1),COMVariant::createFromInt(2));
		com_Items.ExpandItem(h,true);
		com_Items.SelectItem(h,true);
	exgrid1.EndUpdate();
}
613
Is it possible to change the style for the vertical or horizontal grid lines, in the list area

public void init()
{
	COM com_Items;
	anytype var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.DrawGridLines(-1/*exAllLines*/);
	exgrid1.GridLineStyle(33/*exGridLinesVSolid | exGridLinesHDot4*/);
	exgrid1.Columns().Add("C1");
	exgrid1.Columns().Add("C2");
	exgrid1.Columns().Add("C3");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Item 1");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"SubItem 1.2");
		com_Items.CellValue(h,COMVariant::createFromInt(2),"SubItem 1.3");
		h = com_Items.AddItem("Item 2");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"SubItem 2.2");
		com_Items.CellValue(h,COMVariant::createFromInt(2),"SubItem 2.3");
	exgrid1.EndUpdate();
}
612
Is it possible to change the style for the grid lines, for instance to be solid not dotted

public void init()
{
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.DrawGridLines(-1/*exAllLines*/);
	exgrid1.GridLineStyle(48/*exGridLinesSolid*/);
	exgrid1.Columns().Add("Column");
	exgrid1.EndUpdate();
}
611
I have some buttons added on the control's scroll bar, how can I can know when the button is being clicked

// ScrollButtonClick event - Occurs when the user clicks a button in the scrollbar.
void onEvent_ScrollButtonClick(int   _ScrollBar,int   _ScrollPart)
{
	;
	print( _ScrollBar );
	print( _ScrollPart );
}

public void init()
{
	;

	super();

	exgrid1.ScrollPartVisible(1/*exHScroll*/,32768/*exLeftB1Part*/,true);
	exgrid1.ScrollPartVisible(1/*exHScroll*/,16384/*exLeftB2Part*/,true);
	exgrid1.ScrollPartVisible(1/*exHScroll*/,1/*exRightB6Part*/,true);
	exgrid1.ScrollPartVisible(1/*exHScroll*/,2/*exRightB5Part*/,true);
	exgrid1.ScrollBars(5/*exDisableNoHorizontal*/);
}
610
How do I get notified once the user clicks a hyperlink created using the anchor HTML tag

// AnchorClick event - Occurs when an anchor element is clicked.
void onEvent_AnchorClick(str   _AnchorID,str   _Options)
{
	;
	print( _AnchorID );
	print( _Options );
}

public void init()
{
	COM com_Items;
	anytype var_Items;
	;

	super();

	COM::createFromVariant(exgrid1.Columns().Add("Default")).Def(17/*exCellValueFormat*/,COMVariant::createFromInt(1));
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.AddItem("This is a link: <aex.com;1>www.exontrol.com</a>");
		com_Items.AddItem("This is a link: <aex.net;2>www.exontrol.net</a>");
}
609
Is it possible to start editing a cell when double click it

// DblClick event - Occurs when the user dblclk the left mouse button over an object.
void onEvent_DblClick(int   _Shift,int   _X,int   _Y)
{
	;
	exgrid1.Edit();
}

public void init()
{
	COM com_Editor,com_Items,com_Items1;
	anytype var_Editor,var_Items,var_Items1;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.AutoEdit(false);
	exgrid1.MarkSearchColumn(false);
	var_Editor = COM::createFromObject(COM::createFromVariant(exgrid1.Columns().Add("Edit1"))).Editor(); com_Editor = var_Editor;
	com_Editor.EditType(1/*EditType*/);
	var_Editor = COM::createFromObject(COM::createFromVariant(exgrid1.Columns().Add("Edit2"))).Editor(); com_Editor = var_Editor;
	com_Editor.EditType(1/*EditType*/);
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.CellValue(com_Items.AddItem(COMVariant::createFromInt(1)),COMVariant::createFromInt(1),COMVariant::createFromInt(2));
	var_Items1 = exgrid1.Items(); com_Items1 = var_Items1;
		com_Items1.CellValue(com_Items1.AddItem(COMVariant::createFromInt(3)),COMVariant::createFromInt(1),COMVariant::createFromInt(4));
	exgrid1.EndUpdate();
}
608
Is it possible to disable standard single-click behavior for this column, so I manually could call Edit() when needed

// DblClick event - Occurs when the user dblclk the left mouse button over an object.
void onEvent_DblClick(int   _Shift,int   _X,int   _Y)
{
	;
	exgrid1.Edit();
}

public void init()
{
	COM com_Editor,com_Items,com_Items1;
	anytype var_Editor,var_Items,var_Items1;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.AutoEdit(false);
	exgrid1.MarkSearchColumn(false);
	var_Editor = COM::createFromObject(COM::createFromVariant(exgrid1.Columns().Add("Edit1"))).Editor(); com_Editor = var_Editor;
	com_Editor.EditType(1/*EditType*/);
	var_Editor = COM::createFromObject(COM::createFromVariant(exgrid1.Columns().Add("Edit2"))).Editor(); com_Editor = var_Editor;
	com_Editor.EditType(1/*EditType*/);
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.CellValue(com_Items.AddItem(COMVariant::createFromInt(1)),COMVariant::createFromInt(1),COMVariant::createFromInt(2));
	var_Items1 = exgrid1.Items(); com_Items1 = var_Items1;
		com_Items1.CellValue(com_Items1.AddItem(COMVariant::createFromInt(3)),COMVariant::createFromInt(1),COMVariant::createFromInt(4));
	exgrid1.EndUpdate();
}
607
How can I get or restore the old or previously value for the cell being changed
// Change event - Occurs when the user changes the cell's content.
void onEvent_Change(int   _Item,int   _ColIndex,COMVariant /*variant*/   _NewValue)
{
	;
	print( "Old-Value:" );
	print( exgrid1.Items().CellValue(_Item,_ColIndex) );
	print( "New-Value:" );
	print( _NewValue );
}

public void init()
{
	COM com_Editor,com_Items,com_Items1;
	anytype var_Editor,var_Items,var_Items1;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.MarkSearchColumn(false);
	var_Editor = COM::createFromObject(COM::createFromVariant(exgrid1.Columns().Add("Edit1"))).Editor(); com_Editor = var_Editor;
	com_Editor.EditType(1/*EditType*/);
	var_Editor = COM::createFromObject(COM::createFromVariant(exgrid1.Columns().Add("Edit2"))).Editor(); com_Editor = var_Editor;
	com_Editor.EditType(1/*EditType*/);
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.CellValue(com_Items.AddItem(COMVariant::createFromInt(1)),COMVariant::createFromInt(1),COMVariant::createFromInt(2));
	var_Items1 = exgrid1.Items(); com_Items1 = var_Items1;
		com_Items1.CellValue(com_Items1.AddItem(COMVariant::createFromInt(3)),COMVariant::createFromInt(1),COMVariant::createFromInt(4));
	exgrid1.EndUpdate();
}
606
How can I get the item from the cursor
// MouseMove event - Occurs when the user moves the mouse.
void onEvent_MouseMove(int   _Button,int   _Shift,int   _X,int   _Y)
{
	int h;
	;
	h = exgrid1.ItemFromPoint(-1,-1,c,hit);
	print( "Handle" );
	print( h );
	print( "Index" );
	print( exgrid1.Items().ItemToIndex(h) );
}

public void init()
{
	COM com_Items;
	anytype var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.LinesAtRoot(-1/*exLinesAtRoot*/);
	exgrid1.DrawGridLines(1/*exHLines*/);
	exgrid1.Columns().Add("Items");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("R1");
		com_Items.InsertItem(h,,"Cell 1.1");
		com_Items.InsertItem(h,,"Cell 1.2");
		com_Items.ExpandItem(h,true);
		h = com_Items.AddItem("R2");
		com_Items.InsertItem(h,,"Cell 2.1");
		com_Items.InsertItem(h,,"Cell 2.2");
		com_Items.ExpandItem(h,true);
	exgrid1.EndUpdate();
}
605
How can I get the column from the cursor, not only in the header

// MouseMove event - Occurs when the user moves the mouse.
void onEvent_MouseMove(int   _Button,int   _Shift,int   _X,int   _Y)
{
	;
	print( exgrid1.ColumnFromPoint(-1,0) );
}

public void init()
{
	COM com_Items;
	anytype var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.LinesAtRoot(-1/*exLinesAtRoot*/);
	exgrid1.Columns().Add("P1");
	exgrid1.Columns().Add("P2");
	exgrid1.DrawGridLines(-1/*exAllLines*/);
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("R1");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"R2");
		com_Items.CellValue(com_Items.InsertItem(h,,"Cell 1.1"),COMVariant::createFromInt(1),"Cell 1.2");
		com_Items.CellValue(com_Items.InsertItem(h,,"Cell 2.1"),COMVariant::createFromInt(1),"Cell 2.2");
		com_Items.ExpandItem(h,true);
	exgrid1.EndUpdate();
}
604
How can I get the column from the cursor

// MouseMove event - Occurs when the user moves the mouse.
void onEvent_MouseMove(int   _Button,int   _Shift,int   _X,int   _Y)
{
	;
	print( exgrid1.ColumnFromPoint(-1,-1) );
}

public void init()
{
	COM com_Items;
	anytype var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.LinesAtRoot(-1/*exLinesAtRoot*/);
	exgrid1.DrawGridLines(-1/*exAllLines*/);
	exgrid1.Columns().Add("P1");
	exgrid1.Columns().Add("P2");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("R1");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"R2");
		com_Items.CellValue(com_Items.InsertItem(h,,"Cell 1.1"),COMVariant::createFromInt(1),"Cell 1.2");
		com_Items.CellValue(com_Items.InsertItem(h,,"Cell 2.1"),COMVariant::createFromInt(1),"Cell 2.2");
		com_Items.ExpandItem(h,true);
	exgrid1.EndUpdate();
}
603
How can I get the cell's caption from the cursor
// MouseMove event - Occurs when the user moves the mouse.
void onEvent_MouseMove(int   _Button,int   _Shift,int   _X,int   _Y)
{
	int h;
	;
	h = exgrid1.ItemFromPoint(-1,-1,c,hit);
	print( exgrid1.Items().CellCaption(h,c) );
}

public void init()
{
	COM com_Items;
	anytype var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.LinesAtRoot(-1/*exLinesAtRoot*/);
	exgrid1.Columns().Add("Items");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("R1");
		com_Items.InsertItem(h,,"Cell 1.1");
		com_Items.InsertItem(h,,"Cell 1.2");
		com_Items.ExpandItem(h,true);
		h = com_Items.AddItem("R2");
		com_Items.InsertItem(h,,"Cell 2.1");
		com_Items.InsertItem(h,,"Cell 2.2");
		com_Items.ExpandItem(h,true);
	exgrid1.EndUpdate();
}
602
How can I customize the items based on the values in the cells

public void init()
{
	COM com_Column,com_Column1,com_Column2,com_Column3,com_Columns,com_ConditionalFormat,com_ConditionalFormat1,com_ConditionalFormat2,com_ConditionalFormats,com_Editor,com_Items;
	anytype var_Column,var_Column1,var_Column2,var_Column3,var_Columns,var_ConditionalFormat,var_ConditionalFormat1,var_ConditionalFormat2,var_ConditionalFormats,var_Editor,var_Items;
	int h,h1;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.MarkSearchColumn(false);
	var_ConditionalFormats = exgrid1.ConditionalFormats(); com_ConditionalFormats = var_ConditionalFormats;
		var_ConditionalFormat = com_ConditionalFormats.Add("%1 >4"); com_ConditionalFormat = var_ConditionalFormat;
			com_ConditionalFormat.Bold(true);
			com_ConditionalFormat.StrikeOut(true);
			com_ConditionalFormat.ForeColor(WinApi::RGB2int(255,0,0));
			com_ConditionalFormat.ApplyTo(-1/*exFormatToItems*/);
		var_ConditionalFormat1 = com_ConditionalFormats.Add("%2 > 4"); com_ConditionalFormat1 = var_ConditionalFormat1;
			com_ConditionalFormat1.Bold(true);
			com_ConditionalFormat1.StrikeOut(true);
			com_ConditionalFormat1.ForeColor(WinApi::RGB2int(255,0,0));
			com_ConditionalFormat1.ApplyTo(2);
		var_ConditionalFormat2 = com_ConditionalFormats.Add("%3 > 4"); com_ConditionalFormat2 = var_ConditionalFormat2;
			com_ConditionalFormat2.Bold(true);
			com_ConditionalFormat2.StrikeOut(true);
			com_ConditionalFormat2.ForeColor(WinApi::RGB2int(255,0,0));
			com_ConditionalFormat2.ApplyTo(3);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		com_Columns.Add("Name");
		var_Column = COM::createFromVariant(com_Columns.Add("A")); com_Column = var_Column;
			com_Column.SortType(1/*SortNumeric*/);
			com_Column.AllowSizing(false);
			com_Column.Width(36);
			com_Column.FormatColumn("len(value) ? value + ' +'");
			var_Editor = COM::createFromObject(com_Column.Editor()); com_Editor = var_Editor;
			com_Editor.EditType(4/*SpinType*/);
		var_Column1 = COM::createFromVariant(com_Columns.Add("B")); com_Column1 = var_Column1;
			com_Column1.SortType(1/*SortNumeric*/);
			com_Column1.AllowSizing(false);
			com_Column1.Width(36);
			com_Column1.FormatColumn("len(value) ? value + ' +'");
			var_Editor = COM::createFromObject(com_Column1.Editor()); com_Editor = var_Editor;
			com_Editor.EditType(4/*SpinType*/);
		var_Column2 = COM::createFromVariant(com_Columns.Add("C")); com_Column2 = var_Column2;
			com_Column2.SortType(1/*SortNumeric*/);
			com_Column2.AllowSizing(false);
			com_Column2.Width(36);
			com_Column2.FormatColumn("len(value) ? value + ' ='");
			var_Editor = COM::createFromObject(com_Column2.Editor()); com_Editor = var_Editor;
			com_Editor.EditType(4/*SpinType*/);
		var_Column3 = COM::createFromVariant(com_Columns.Add("A+B+C")); com_Column3 = var_Column3;
			com_Column3.SortType(1/*SortNumeric*/);
			com_Column3.AllowSizing(false);
			com_Column3.Width(64);
			com_Column3.ComputedField("%1+%2+%3");
			com_Column3.FormatColumn("((0:=dbl(value)) < 10? '<fgcolor=808080><font ;7>' :'<b>') + currency(=:0)");
			com_Column3.Def(17/*exCellValueFormat*/,COMVariant::createFromInt(1));
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Root");
		com_Items.CellValueFormat(h,COMVariant::createFromInt(4),2/*exComputedField*/);
		h1 = com_Items.InsertItem(h,,"Child 1");
		com_Items.CellValue(h1,COMVariant::createFromInt(1),COMVariant::createFromInt(7));
		com_Items.CellValue(h1,COMVariant::createFromInt(2),COMVariant::createFromInt(3));
		com_Items.CellValue(h1,COMVariant::createFromInt(3),COMVariant::createFromInt(1));
		h1 = com_Items.InsertItem(h,,"Child 2");
		com_Items.CellValue(h1,COMVariant::createFromInt(1),COMVariant::createFromInt(2));
		com_Items.CellValue(h1,COMVariant::createFromInt(2),COMVariant::createFromInt(5));
		com_Items.CellValue(h1,COMVariant::createFromInt(3),COMVariant::createFromInt(12));
		h1 = com_Items.InsertItem(h,,"Child 3");
		com_Items.CellValue(h1,COMVariant::createFromInt(1),COMVariant::createFromInt(2));
		com_Items.CellValue(h1,COMVariant::createFromInt(2),COMVariant::createFromInt(2));
		com_Items.CellValue(h1,COMVariant::createFromInt(3),COMVariant::createFromInt(4));
		h1 = com_Items.InsertItem(h,,"Child 4");
		com_Items.CellValue(h1,COMVariant::createFromInt(1),COMVariant::createFromInt(2));
		com_Items.CellValue(h1,COMVariant::createFromInt(2),COMVariant::createFromInt(9));
		com_Items.CellValue(h1,COMVariant::createFromInt(3),COMVariant::createFromInt(4));
		com_Items.ExpandItem(h,true);
	exgrid1.EndUpdate();
}
601
Is it is possible to have a column computing values from other columns

public void init()
{
	COM com_Column,com_Column1,com_Column2,com_Column3,com_Columns,com_Editor,com_Items;
	anytype var_Column,var_Column1,var_Column2,var_Column3,var_Columns,var_Editor,var_Items;
	int h,h1;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.MarkSearchColumn(false);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		com_Columns.Add("Name");
		var_Column = COM::createFromVariant(com_Columns.Add("A")); com_Column = var_Column;
			com_Column.SortType(1/*SortNumeric*/);
			com_Column.AllowSizing(false);
			com_Column.Width(36);
			com_Column.FormatColumn("len(value) ? value + ' +'");
			var_Editor = COM::createFromObject(com_Column.Editor()); com_Editor = var_Editor;
			com_Editor.EditType(4/*SpinType*/);
		var_Column1 = COM::createFromVariant(com_Columns.Add("B")); com_Column1 = var_Column1;
			com_Column1.SortType(1/*SortNumeric*/);
			com_Column1.AllowSizing(false);
			com_Column1.Width(36);
			com_Column1.FormatColumn("len(value) ? value + ' +'");
			var_Editor = COM::createFromObject(com_Column1.Editor()); com_Editor = var_Editor;
			com_Editor.EditType(4/*SpinType*/);
		var_Column2 = COM::createFromVariant(com_Columns.Add("C")); com_Column2 = var_Column2;
			com_Column2.SortType(1/*SortNumeric*/);
			com_Column2.AllowSizing(false);
			com_Column2.Width(36);
			com_Column2.FormatColumn("len(value) ? value + ' ='");
			var_Editor = COM::createFromObject(com_Column2.Editor()); com_Editor = var_Editor;
			com_Editor.EditType(4/*SpinType*/);
		var_Column3 = COM::createFromVariant(com_Columns.Add("A+B+C")); com_Column3 = var_Column3;
			com_Column3.SortType(1/*SortNumeric*/);
			com_Column3.AllowSizing(false);
			com_Column3.Width(64);
			com_Column3.ComputedField("%1+%2+%3");
			com_Column3.FormatColumn("((0:=dbl(value)) < 10? '<fgcolor=808080><font ;7>' :'<b>') + currency(=:0)");
			com_Column3.Def(17/*exCellValueFormat*/,COMVariant::createFromInt(1));
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Root");
		com_Items.CellValueFormat(h,COMVariant::createFromInt(4),2/*exComputedField*/);
		h1 = com_Items.InsertItem(h,,"Child 1");
		com_Items.CellValue(h1,COMVariant::createFromInt(1),COMVariant::createFromInt(7));
		com_Items.CellValue(h1,COMVariant::createFromInt(2),COMVariant::createFromInt(3));
		com_Items.CellValue(h1,COMVariant::createFromInt(3),COMVariant::createFromInt(1));
		h1 = com_Items.InsertItem(h,,"Child 2");
		com_Items.CellValue(h1,COMVariant::createFromInt(1),COMVariant::createFromInt(2));
		com_Items.CellValue(h1,COMVariant::createFromInt(2),COMVariant::createFromInt(5));
		com_Items.CellValue(h1,COMVariant::createFromInt(3),COMVariant::createFromInt(12));
		h1 = com_Items.InsertItem(h,,"Child 3");
		com_Items.CellValue(h1,COMVariant::createFromInt(1),COMVariant::createFromInt(2));
		com_Items.CellValue(h1,COMVariant::createFromInt(2),COMVariant::createFromInt(2));
		com_Items.CellValue(h1,COMVariant::createFromInt(3),COMVariant::createFromInt(4));
		h1 = com_Items.InsertItem(h,,"Child 4");
		com_Items.CellValue(h1,COMVariant::createFromInt(1),COMVariant::createFromInt(2));
		com_Items.CellValue(h1,COMVariant::createFromInt(2),COMVariant::createFromInt(9));
		com_Items.CellValue(h1,COMVariant::createFromInt(3),COMVariant::createFromInt(4));
		com_Items.ExpandItem(h,true);
	exgrid1.EndUpdate();
}